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