flask-socketio使用遇到的坑,版本兼容问题和while True堵塞信息问题

  特别说明,下面解决方法是在按网上最容易查到的一个案例参考使用时,遇到了问题,反复使用仍没有解决情况下,找到了下面文章,发现是后台的while true问题,特别编辑理发一下,同时感谢原作者,引用地址如下,避免大家遇到同样问题。
  [https://www.cnblogs.com/luozx207/p/9714487.html](https://www.cnblogs.com/luozx207/p/9714487.html)

特别请大家注意,版本兼容问题:
flask-socketio使用遇到的坑,版本兼容问题和while True堵塞信息问题_第1张图片

websocket连接是客户端与服务器之间永久的双向通信通道,直到某方断开连接。
  双向通道意味着在连接时,服务端随时可以发送消息给客户端,反之亦然,这在一些需要即时通讯的场景比如多人聊天室非常重要。
  flask_socketio实现了对websocket的封装,它可以让运行flask应用的服务端和客户端建立全双工通道。
  flask_socketio是一个python库,是flask框架的扩展。

一、安装

pip install flask-socketio

二、实现对flask的封装

from flask import Flask, render_template
from flask_socketio import SocketIO,emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

if __name__ == '__main__':
    socketio.run(app, debug=True)

socketio.run()函数封装了flask的web服务器的启动

三、服务端向客户端推送

socketio的两个函数send()和emit()都可以实现消息发送,前者用于无名事件,后者用于命名的事件。
  事件是消息的名称。如果把消息比做信件,事件就是贴在信封上的标识,这个标识规定了信件送往客户端或服务端的某个函数。

from flask import Flask, render_template
from flask_socketio import SocketIO,emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@socketio.on('connect', namespace='/test_conn')
def test_connect():
        socketio.emit(

你可能感兴趣的:(websocket,python)