Flask-SocketIO 使 Flask 应用程序能够访问客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 Javascript,C ++,Java 和 Swift 中的任何 SocketIO 官方客户端库或任何兼容的客户端来建立与服务器的永久连接。
项目的消息模块需要socket全双工即时通信。
资料较少,官网,github上都是全英文介绍。
直接使用 pip 来安装:
pip install flask-socketio
Flask-SocketIO 兼容 Python 2.7 和 Python 3.3+。可以从以下三个选项中选择此程序包所依赖的异步服务:
扩展会根据安装的内容自动检测要使用的异步框架。优先考虑 eventlet,然后是 gevent。对于 gevent 中的WebSocket 支持,首选 uWSGI,然后是 gevent-websocket。如果既未安装 eventlet 也未安装 gevent,则使用 Flask 开发服务器。
如果使用多个进程,则进程使用消息队列服务来协调诸如广播之类的操作。支持的队列是 Redis,RabbitMQ以及 Kombu 软件包支持的任何其他消息队列 。
在客户端,官方 Socket.IO Javascript 客户端库可用于建立与服务器的连接。还有使用 Swift,Java 和 C ++ 编写的官方客户端。非官方客户端也可以工作,只要它们实现 Socket.IO协议。
flask-socketio并没有很好的集成websocket,但他良好的集成了js的基于websocket的一个扩展库。所以在前端调用时候需要注意。
其次遇到的一个问题就是,用户两两之间通信和用户和服务器之间两两通信需要对服务器进行额外区分。用户两两通信采用的是框架中的一个 room字段实现,顾名思义,每个用户有各自单独的room,可以接收来自其他用户发送的消息,消息带有发送者的相关信息,服务器对他们在进行区分,最终良好的实现在用户的界面上。
如果后端的采用的是flask框架,flask-socketio不失为一个非常优秀的即时通信框架。
greyli,《flask开发与实战应用》
原文地址:https://www.cnblogs.com/heaoxiang2018/p/13188707.html