精华内容
下载资源
问答
  • from flask_sockets import Sockets app = Flask ( __name__ ) sockets = Sockets ( app ) @ sockets . route ( '/echo' ) def echo_socket ( ws ): while not ws . closed : message = ws . receive () ws . ...
  • from flask_sockets import Sockets from flask import Flask, Blueprint sockets = Sockets(app) ws = Blueprint(r'ws', __name__) sockets.register_blueprint(ws, url_prefix=r'/') app = Flask(__name__) ...

    服务端

    from geventwebsocket import WebSocketApplication
    from flask_sockets import Sockets
    from flask import Flask, Blueprint
    
    sockets = Sockets(app)
    ws = Blueprint(r'ws', __name__)
    sockets.register_blueprint(ws, url_prefix=r'/')
    app = Flask(__name__)
    
    
    class EchoApplication(WebSocketApplication):
    
        def on_open(self):
            LOGGER.info(u'有人连接啦')
            self.ws.send(u'connection success')
    
        def on_message(self, message):
            try:
                if isinstance(message, dict):
                    message = json.dumps(message)
                LOGGER.info(u'接收数据:%s' % (message))
                message = json.loads(message)
                msg_type = message["type"]
            except:
                self.send_error('unknow message!')
                return
    
            # sid = request.sid
    
            # return
            if msg_type == 'heart_msg':
                self.handle_online_device(message)
                return
            if msg_type == 'authentication':          
                    self.ws.send(json.dumps({}))
                else:
                    self.send_error(u'身份认证失败', operation=u'authentication')
                    self.ws.close()
                return
    
        def on_close(self, reason):
            print(u'有人断开了,hhhhhhh')
    
    if __name__ == "__main__":
        from werkzeug.debug import DebuggedApplication
        from app.websocket.websocket import EchoApplication
        from geventwebsocket import Resource, WebSocketServer
        WebSocketServer(('0.0.0.0', 8084),
                        Resource([('/', EchoApplication), ('^/.*', DebuggedApplication(app))]), debug=False).serve_forever()
    

    客户端

    from websocket import create_connection
    ws = create_connection("ws://localhost:5000/echo")
    ws.send("Hello, linyk3")
    result = ws.recv()
    print(result)
    ws.close()
    
    展开全文
  • python中socket、socketio、flask-socketio、WebSocket的区别与联系:https://www.cnblogs.com/lgjbky/p/9391073.html --------------------------------------------上面这些文章仅供参考,下面分享自己的心得-----...

    python中socket、socketio、flask-socketio、WebSocket的区别与联系https://www.cnblogs.com/lgjbky/p/9391073.html

    --------------------------------------------上面这些文章仅供参考,下面分享自己的心得------------------------------------------------------------------

    Flask-SocketIO官网:

    https://flask-socketio.readthedocs.io/en/latest/ 

    https://github.com/miguelgrinberg/Flask-SocketIO

    Flask-Sockets官网:https://github.com/heroku-python/flask-sockets

     

    关于Flask-SocketIO是Flask-Sockets的对比【Flask-SocketIO是Flask-Sockets的升级版!】

    服务端python【Flask-SocketIO 】<---->  客户端JavaScript-socket.io库【https://socket.io/docs/

    服务端python【Flask-Sockets】<----> 客户端JavaScript-原生的WebSoket【https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket

    注意:以上两种服务端和客户端的对应不可交叉【否则会无法连接,会出各种问题,因为版本根本就不一样】

     

    Websoket测试网站【这个网站仅支持Flask-Sockets】http://www.blue-zero.com/WebSocket/

     

    Flask-Sockets对应客户端实现和Flask-SocketIO库对应客户端实现案例参考:https://www.cnblogs.com/wangkun122/articles/9117882.html

     

    在当前时间2019.6.19号写这篇文章的时候,【uni-app框架】由于是基于原生的Websoket直接封装,和JavaScript-socket.io库没有任何关系,所以python只能使用Flask-Sockets去做客户端

    展开全文
  • WebSocket是啥? WebSocket是HTML5引入的新的通信协议,主要由Web客户端和服务器实现,...  ... 一旦建立,连接一直有效,直到其中一方断开连接。 flask实现websocket的两种方式 ...flask 实现websocket有两种方式实现...

    WebSocket是啥?

    WebSocket是HTML5引入的新的通信协议,主要由Web客户端和服务器实现,当然它也可以在Web之外实现。 
    与HTTP连接不同,WebSocket连接是客户端和服务器之间永久的双向通信通道,其中任何一个都可以启动交换。 一旦建立,连接一直有效,直到其中一方断开连接。

    flask实现websocket的两种方式

    flask 实现websocket有两种方式实现,一种是flask_sockets方式,该方式是flask对websocket的最原始封装,功能较为单一,第二种方式Flask-SocketIO对websocket的封装,该方式所能提供功能较多,不但实现了socket的基本通信功能,也可以结合flask相关接口,使其更加完备,因此网上对该api介绍也较多。

    使用Flask-Sockets

    服务端

    服务端receive()方法,必须接收客户端发送的数据,才能实现两两互相通信。

    #!/usr/bin/env python
    # encoding: utf-8
    """
    @version: v1.0
    @author: W_H_J
    @license: Apache Licence
    @contact: 415900617@qq.com
    @software: PyCharm
    @file: flaskWebSocket.py
    @time: 2019/2/19 10:20
    @describe: flask_sockets 实现websocket
    """
    import json
    import sys
    import os
    from flask_sockets import Sockets
    import time
    from gevent import monkey
    from flask import Flask
    from gevent import pywsgi
    from geventwebsocket.handler import WebSocketHandler
    sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
    sys.path.append("..")
    monkey.patch_all()
    
    app = Flask(__name__)
    sockets = Sockets(app)
    now = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
    
    
    @sockets.route('/test')  # 指定路由
    def echo_socket(ws):
        while not ws.closed:
            ws.send(str("message test!"))  # 回传给clicent
            """ 服务端必须接收到客户端发的消息才能保持该服务运行,如果ws.receive()没有接收到客户端发送的
             消息,那么它会关闭与客户端建立的链接
             底层解释:Read and return a message from the stream. If `None` is returned, then
            the socket is considered closed/errored.
            所以客户端只建立连接,不与服务端交互通信,则无法实现自由通信状态,之后在客户端代码处会有详细内容。
             """
            message = ws.receive()  # 接收到消息
            if message is not None:
                print("%s receive msg==> " % now, str(json.dumps(message)))
                """ 如果客户端未发送消息给服务端,就调用接收消息方法,则会导致receive()接收消息为空,关闭此次连接 """
                ws.send(str(json.dumps(message)))  # 回传给clicent
            else:
                print(now, "no receive")
    
    
    @app.route('/')
    def hello():
        return 'Hello World! server start!'
    
    
    if __name__ == "__main__":
    
        server = pywsgi.WSGIServer(('0.0.0.0', 5000), app, handler_class=WebSocketHandler)
        print('server start')
        server.serve_forever()

     

     HTML客户端

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script>
    </head>
    <body>
        <div id="time" style="width: 300px;height: 50px;background-color: #0C0C0C;
        color: white;text-align: center;line-height: 50px;margin-left: 40%;font-size: 20px"></div>
    
        <script>
                var ws = new WebSocket("ws://127.0.0.1:5000/test");  #连接server--test
    
                ws.onmessage = function (event) {
                    content = document.createTextNode(event.data); # 接收数据
                    $("#time").html(content);
    
                };
    
        </script>
        </body>
    </html>

     python客户端

    #!/usr/bin/env python
    # encoding: utf-8
    """
    @version: v1.0
    @author: W_H_J
    @license: Apache Licence
    @contact: 415900617@qq.com
    @software: PyCharm
    @file: flaskclicent.py
    @time: 2019/2/19 10:34
    @describe: flask_sockets 客户端
    """
    import sys
    import os
    import datetime
    sys.path.append(os.path.abspath(os.path.dirname(__file__) + '/' + '..'))
    sys.path.append("..")
    from websocket import create_connection
    # websocket-client
    # 通过socket路由访问
    now = datetime.datetime.now()
    print(now)
    
    
    def send_query_webSocket():
        ws = create_connection("ws://10.10.20.21:9000/test")
        result_1 = ws.recv()  # 接收服务端发送的连接成功消息
        print(result_1)
        """
        上面recv()方法接收服务端 发送的第一条消息:ws.send(str("message test!"))  # 回传给clicent
        下面再要接收消息,必须先给服务端发送一条消息,不然服务端message = ws.receive() 的receive方法
        没有收到消息,而这里直接调用rece()方法去接收服务端消息,则会导致服务端关闭此次连接;
        底层方法介绍:Read and return a message from the stream. If `None` is returned, then
            the socket is considered closed/errored.
        虽然此次连接关闭了,但是对于客户端来说并不知情,而客户端recv()方法又是一个阻塞方式运行,所以会导致
        客户端永远阻塞在这里无法关闭,这也是flask_sockets 客户端服务端交互的一个缺点吧。
        """
        ws.send("I am test msg!")
        result = ws.recv()
        print(result)
        ws.close()
        return True
    
    
    if __name__ == '__main__':
        send_query_webSocket()
    
     
    展开全文
  • flask使用flask_sockets实现websocket ws://请求下载服务端 下载 pip3 install Flask-Sockets pip3 install gevent 服务端 from flask import Flask from flask_sockets import Sockets import datetime import time...

    flask使用flask_sockets实现websocket ws://请求

    下载

    pip3 install Flask-Sockets
    pip3 install gevent

    服务端

    from flask import Flask
    from flask_sockets import Sockets
    import datetime
    import time
    from gevent import pywsgi
    from geventwebsocket.handler import WebSocketHandler
    
    app = Flask(__name__)
    sockets = Sockets(app)
    
    @app.route('/')
    def index():
        return 'hello'
    
    @sockets.route('/test')
    def test(ws):
        while not ws.closed:
            msg = ws.receive()
            print(f'i received:{msg}')
            if msg:
                now = datetime.datetime.now().isoformat()
                ws.send(now)
                print(f'i sent:{now}')
                time.sleep(1)
    
    
    if __name__ == "__main__":
        server = pywsgi.WSGIServer(('0.0.0.0',8540),application=app,handler_class=WebSocketHandler)
        print('server started')
        server.serve_forever()
    
    

    客户端

    from websocket import create_connection
    
    def client_handle():
        ws = create_connection('ws://0.0.0.0:8540/test')
        while True:
            if ws.connected:
                ws.send('hi,i am ws client')
                result = ws.recv()
                print(f"client received:{result}")
                # ws.close()
    
    if __name__ == "__main__":
        client_handle()
    

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • flask_sockets模块的使用 可以自定义路由 socket路由的访问地址为ws://localhost:端口/自定义的地址 如ws://localhost:5000/echo 当创建一个ws的时候,接收到了数据,但是却想返回(send)到另外一个ws,这怎么办...
  • 使用flask-socketio实现WebSocket消息广播

    千次阅读 2018-12-26 16:25:09
    flask应用内,通过引入flask-socketio实现站内WebSocket消息广播。各网页接收广播消息并动态刷新页面。 为便于观察,我们通过向服务端发送"/push" http 请求,触发站内广播;并通过Flask-SocketIO的广播...
  • 安装Flask-Sockets很容易: pip install flask-socketio 注意Flask-SocketIO依赖gevent库,目前它仅可以在python2上运行(译者注:python3.6测试也可以)。gevent很快也会对python3支持。 下面是一个Flask-...
  • Flask-SocketsFlask-SocketIO区别 Flask-SocketsFlask-SocketIO之间的主要区别在于前者仅仅将WebSocket协议(通过使用gevent-websocket项目)进行包装,因此它只适用于原生支持WebSocket协议的浏览器,对于那些...
  • python基于flask_sockets实现WebSocket

    千次阅读 2020-03-23 01:44:37
    WebSocket是啥? WebSocket是HTML5引入的新的通信协议,主要由Web客户端和服务器实现,... ... 一旦建立,连接一直有效,直到其中一方断开连接。 flask实现websocket的两种方式 flask 实现websocket有两种方式实现,一...
  • 1 阻塞 1.0 服务端 from flask import Flask, jsonify, ...from flask_sockets import Sockets import datetime import time import random from queue import Queue app = Flask(__name__) sockets =...
  • Flask-Mail使用163邮箱异步发送邮件

    千次阅读 2018-03-12 19:18:45
    虽然 Python 标准库中的 smtplib 包可用在 Flask 程序中发送电子邮件,但包装了 smtplib 的Flask-Mail 扩展能更好地和 Flask 集成。使用 pip 安装 Flask-Mail:(venv) $ pip install flask-mailFlask-Mail 配置项...
  • flask socket

    千次阅读 2019-02-20 00:28:58
    bg 想要搞一个定时发送...服务器需要定时向browser推送数据,使用flask_socket sockets = Sockets(app) @sockets.route('/echo') def echo_socket(ws): while True: message = ws.receive() ws.send(message) ...
  • 很久没用博客园了,最近涉及到一个问题,需要向前端推送日志 ...1.flask-sockets 2.flask-socketIO 具体的使用大家网上都能找的到,具体这里说一下遇到的坑, flask-socketIO app.run() 出现这样的...
  • Make sure your server Cross-Origin Controls is set to '*' to allow Cross-Origin Access For flask-socketio, is to use flask_socketio.SocketIO(app, cors_allowed_origins = '*') 就是这里,要开启这...
  • 首先得明确一点,和Django一样,在2020年Flask 1.1.1以后的版本都不需要所谓的三方库支持,即Flask-Celery或者Flask-Celery-Help这些库,直接使用Celery原生库即可。 一般情况下,Celery被用来处理耗时任务,比如...
  • 在git上下了一个用flask实现的文件上传下载的代码,上周一切都能正常运行。 https://github.com/greyli/flask-file-uploader 这周开始文件上传功能没有反应,文件列表也不显示了。上stackoverflow查,有人说是操作...
  • 关于flask你想要的这里都有!!! Flask-AppBuilder - Simple and rapid Application builder, includes detailed security, auto form generation, google charts and much more. FlaskEx - UNKN...
  • 启用安全套阶层(Secure Sockets Layer, SSL)协议 MAIL_USERNAME None 邮件账户的用户名 MAIL_PASSWORD None 邮件账户的密码 MAIL_DEBUG app.debug 是否开启DEBUG ...
  • flask 中提供了消息闪现机制,方便我们消息提示,所使用的模块是 flash 模块。在我们使用 flash 时,我们需要调用 app.secret_key 字段,该字段会对消息进行加密。具体代码如下: #!/usr/bin/env python # -*- ...
  • python-websockets-chat, 在 Flask 中,web sockets的一个示例实现 python-web socket示例: 聊天这是一个简单的应用程序,用于使用 Flask 。瓶套套接口。Gevent和tmodel的用户。Mmmm 。查看演示或者阅读文档文档。
  • 错误如上图所示。在windows环境下报这样的错误,在ubuntu下报另一个错误码。 尝试了各种办法,检查了无数遍,搜遍了各大论坛,看过了各种答案,尝试了各种环境,更换了好几个邮箱,折磨了好几天就是解决不了。...
  • Python 内置了一个 smtplib 的模块,可以用来发送邮件,这里我们使用 Flask-Mail,是因为它可以和 Flask 集成,让我们更方便地实现此功能。 安装 使用 pip 安装: $ pip install Flask-Mail ...
  • render_template,request,Flask from geventwebsocket.handler import WebSocketHandler # 提供WS协议处理 from geventwebsocket.server import WSGIServer # 承载服务 from geventwebsocket....
  • Flask扩展 -- flask-mail

    2017-09-21 23:50:00
    虽然Python标准库中的smtplib包可用在Flask程序中发送电子邮件,但包装了smtplib的Flask-Mail扩展能更好的和Flask集成。 1.安装Flask-Mail 1.1使用pip安装 pip install flask-mail 1.2 下载源码安装 git ...
  • -为什么我要使用flask-socketio模块,而不是flask-sockets? - 因为flask-socketio与前端流行的websocket库socketio语法类似,前后端交互容易理解,并且flask-socketio能非常容易得与flask项目结合。 效果预览:...
  • Python 内置了一个 smtplib 的模块,可以用来发送邮件,这里我们使用 Flask-Mail,是因为它可以和 Flask 集成,让我们更方便地实现此功能。 安装 使用 pip 安装: $pipinstallFlask-Mail 或下载源码安装:...
  • Flask-Mail(电子邮件)

    2021-09-09 20:09:44
    Flask-Mail SMTP服务器的配置 配置 默认值 说明 MAIL-SERVER localhost 电子邮件服务器的主机名或IP地址 MAIL-PORT 25 电子邮件服务器的端口 MAIL_USE_TLS False 启用传输层安全(TLS,transport layer...
  • flask学习7-电子邮件

    2018-12-15 04:43:39
    虽然 Python 标准库中的 smtplib 包可用在 Flask 程序中发送电子邮件,但包装了 smtplib 的 Flask-Mail 扩展能更好地和 Flask 集成。 使用Flask-Mail提供电子邮件支持 (venv) $ pip install flask-mail Flask-Mail ...
  • flask中使用WebSocket

    万次阅读 2017-06-02 23:53:20
    原文:Easy WebSockets with Flask and Gevent 但是还没有翻译完,后面会进行更新的 我很高兴地介绍Flask-SocketIO,这是一个非常易于使用的扩展,可以在Flask应用程序中启用WebSocket通信。WebSocket是啥?...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 723
精华内容 289
关键字:

flask-sockets