本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

一、简介:

Flask-SocketIO使Flask应用程序可以实现客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 JavascriptPythonC++JavaSwift中的任何SocketIO客户端库或任何其他兼容客户端来建立与服务器的永久连接。

二、安装:

通过pip即可安装:

$ pip install flask-socketio

三、运行Flask-SocketIO要求:

Flask-SocketIO必须要Python 3.6+的版本,可以从下面三个选项中选择:

  1. eventlet是性能最好的选择,支持长轮询和WebSocket传输。
  2. 也可以使用geventgevent包完全支持长轮询传输,但与eventlet不同的是,gevent没有原生 WebSocket 支持。要添加对 WebSocket 的支持,目前有两个选项。安装gevent-websocket 包为 gevent 添加了 WebSocket 支持,或者可以使用带有 WebSocket 功能的uWSGI Web 服务器。使用 gevent 也是一个性能比较高的选择,但比 eventlet 略低。
  3. 也可以使用基于 WerkzeugFlask 开发服务器,但需要注意的是,该 Web 服务器仅用于开发用途,因此它应该仅用于简化开发工作流程,而不用于生产。

Flask-SocketIO会根据安装的包自动检测要使用的异步框架。优先使用 eventlet,其次是 gevent。对于 gevent 中的 WebSocket 支持,首选 uWSGI,其次是 gevent-websocket。如果 eventletgevent 均未安装,则使用 Flask 开发服务器。

如果使用多个进程,则必须配置消息队列服务以允许服务器协调广播等操作。支持的队列是RedisRabbitMQKafka以及Kombu包支持的任何其他消息队列。

在客户端,可以使用官方的 Socket.IO Javascript 客户端库来建立与服务器的连接。还有用 SwiftJavaC++ 编写的官方客户端。非官方客户端也可以工作,只要它们实现了 Socket.IO 协议就可以。Python-SocketIO 包实现了SocketIO协议的Python客户端。(注:Python-SocketIO也是Flask-SocketIO作者写的)。

四、版本支持:

Socket.IO协议经过多次修订,其中一些引入了向后不兼容的更改,这意味着客户端和服务器必须使用兼容版本才能正常工作。

下面的版本兼容性图表将此包的版本映射到JavaScript 参考实现的版本以及 Socket.IOEngine.IO 协议的版本。

JavaScript Socket.IO版本 Socket.IO 协议修订 Engine.IO 协议修订 Flask-SocketIO 版本 python-socketio 版本 python-engineio 版本
0.9.x 1、2 1、2 不支持 不支持 不支持
1.x 和 2.x 3、4 3 4.x 4.x 3.x
3.x 和 4.x 5 4 5.x 5.x 4.x

4168人已阅读,今天你学习了吗?

添加新回复