Flask-SocketIO的使用

本文详细介绍了如何使用Flask-SocketIO进行实时通信,包括安装、依赖、初始化、路由、消息收发、广播、房间管理、连接与断开连接,以及基于类的命名空间。Flask-SocketIO支持WebSocket和长轮询,可用于高性能实时应用开发。
摘要由CSDN通过智能技术生成

Flask-SocketIO为Flask应用程序提供对客户端和服务器之间的低延迟双向通信的访问。客户端应用程序可以使用Javascript,C++,Java和Swift中任何SocketIO官方客户端和任何兼容客户端来建立与服务器的永久连接。

安装

pip install flask-socketio

依赖

Flask-SocketIO兼容Python2.7和Python3.3+,该软件的异步服务可以从以下三种选择中选择:

  • eventlet:高性能选项,支持长轮询和WebSocket传输
  • gevent:支持多种不同的配置。long-polling传输完全由gevent包支持,但与eventlet不同,gevent没有原生的WebSocket支持。为了增加对WebSocket的支持,目前有两种选择:安装gevent-websocket软件包会将WebSocket支持添加到gevent中,或者可以使用随WebSocket功能一起提供的uWSGI Web容器。gevent也是一项高性能选项,但略低于eventlet。
  • 基于Werkzeug的Flask开发服务器也可以使用,但需要注意的是它缺少其他两个选项的性能,所以它只能用于简化开发流程。该选项仅支持长轮询传输

该扩展根据安装的内容自动检测使用哪个异步框架,优先考虑eventlet,然后是gevent。对于gevent中的WebSocket支持,首选uWSGI,然后是gevent-websocket。如果既没有安装eventlet,也没有安装gevent,则使用Flask开发服务器。

如果使用多个进程,则进程使用消息队列服务来协调诸如广播等操作。受支持的队列包括:Redis、RabbitMQ和Kombu软件包支持的任何其他消息队列。

初始化

举个简单的栗子:

from flask import Flask
from flask_socketio import SocketIO

app = Flask(__name__)
app.config["SECRET_KEY"] = "secret!"
socketio = SocketIO(app)

if __name__ == "__main__":
    socketio.run(app, host="0.0.0.0", port=5000)

init_app()初始化的样式也被支持。请注意Web服务器的启动方式,该socketIO.run()功能封装了Web服务器的启动并取代了app.run()标准的Flask开发服务器的启动。当我们的服务器程序启动了,相应的客户端程序必须提供一个页面加载SocketIO库:

<script type="text/javascript" src="ht
  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值