一、soketio.Middleware
class socketio.Middleware(socketio_app, wsgi_app=None, socketio_path='socket.io')
用于Socket.IO的WSGI中间件。
此中间件将流量分派到 Socket.IO
应用程序(application),并可选地将常规HTTP流量转发给WSGI应用程序。
参数:
socketio_app # Socket.IO服务端
wsgi_app # 接收所有其他流量的WSGI应用程序。
socketio_path # 应该安装Socket.IO应用程序的端点。默认值适用于大多数情况。
示例:
import socketio
import eventlet
from . import wsgi_app
sio = socketio.Server()
app = socketio.Middleware(sio, wsgi_app)
eventlet.wsgi.server(eventlet.listen(('', 8000)), app) // 这里是监听端口
二、socketio.Server
- 初始化Server
class socketio.Server(client_manager=None, logger=False, binary=False, json=None, async_handlers=False, **kwargs)
一个Socket.IO服务端。
这个类实现了完全兼容的Socket.IO Web服务器,支持websocket和long-polling传输。
参数:
client_manager # 将管理客户端列表的客户端管理器实例。当这被省略时,客户列表被存储在内存中的结构中,所以不能使用多个连接的服务端。
logger # 启用日志记录设置True或传递记录器对象使用。禁用日志记录设置为False。默认是 False。
binary # True支持二进制有效载荷,False将所有有效载荷视为文本。在Python 2中,如果设置为True, 则将unicode值视为文本,str并将 bytes值视为二进制。这个选项对Python 3没有任何影响,Python 3总是自动发现文本和二进制的有效载荷。
json # 用于编码和解码数据包的替代json模块。自定义json模块必须具有dumps与loads 标准库版本兼容的功能。
async_handlers # 如果设置为True,事件处理程序在不同的线程中执行。要同步运行处理程序,请设置为False。默认是False。
kwargs # 底层Engine.IO服务器的连接参数。[具体参数请参考官方文档](https://python-socketio.readthedocs.io/en/latest/)
close_room(room, namespace=None)
关闭一个聊天室。
该功能可以移除给定房间内的所有客户端。
参数:
room # 聊天室名称
namespace # 事件的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
disconnect(sid,namespace = None )
断开客户端。
参数:
sid # 客户端的会话ID。
namespace # 要断开的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )
向一个或多个连接的客户端发出自定义事件。
注意:这里我们emit room的话,那么room中所有的连接的用户可以直接触发这个event
事件。room也可以是单独的用户的sid,那么就只会给这个人传递。
参数:
event # 事件名称。它可以是任何字符串。事件名称 `connect`, `message`, `disconnect` 保留,不应该使用。
data # 要发送给客户端或多个客户端的数据。数据可以是`str`,`bytes`,`list`, `dict`类型,如果是一个`list`或者`dict`, 数据将被序列化为JSON。
room # 消息的接收者。这可以设置为客户端的会话ID来处理该客户的房间,或者由应用程序创建的任何自定义房间。如果省略该参数,则将事件广播给所有连接的客户端。
skip_sid # 广播到房间或所有客户端时要跳过的客户端的会话ID。这可以用来防止邮件被发送到发件人。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则该事件将发送到默认名称空间。
callback # 如果给定,将调用此函数来确认客户端已收到消息。传递给函数的参数是客户端提供的参数。回拨函数只能在寻址单个客户端时使用。
ignore_queue # 仅在配置消息队列时使用。如果设置为True,该事件直接发送到客户端,而不通过队列。这是更高效的,但只有在使用单个服务器进程时才有效。建议始终将此参数保留为其默认值False。
enter_room(sid,room,namespace = None )
进入一个房间。
此功能将客户端添加到一个房间。
handle_request(environ,start_response )
处理来自客户端的HTTP请求。
这是Socket.IO应用程序的入口点,使用与WSGI应用程序相同的接口。对于典型的用法,这个函数是由Middleware
实例调用的,但是在不使用中间件的时候可以直接调用。
参数:
environ # WSGI环境。
start_response # WSGI start_response函数。
该函数返回HTTP响应正文以字节序列传递给客户端。
leave_room(sid,room,namespace = None )
离开房间。
这个功能可以将客户端移除房间。
参数:
sid # 客户端的会话ID。
room # 房间名称。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
on(event,handler = None,namespace = None )
注册事件处理程序。
参数:
event # 事件名称。它可以是任何字符串。事件名称 'connect','message'和'disconnect'保留,不能使用。
handler # 应该被调用来处理事件的函数。当没有给出这个参数时,该方法充当处理函数的装饰器。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则处理程序将与默认名称空间关联。
用法示例:
# as a decorator:
@socket_io.on('connect', namespace='/chat')
def connect_handler(sid, environ):
print('Connection request')
if environ['REMOTE_ADDR'] in blacklisted:
return False # reject
# as a method:
def message_handler(sid, msg):
print('Received message: ', msg)
eio.send(sid, 'response')
socket_io.on('message', namespace='/chat', message_handler)
处理函数接收sid客户端的(会话ID)作为第一个参数。'connect'事件处理程序接收WSGI环境作为第二个参数,并且可以返回False拒绝连接。'message'自定义事件名称的处理程序和处理程序将接收消息有效内容作为第二个参数。从消息处理程序返回的任何值将传递给客户端的确认回调函数(如果存在)。该 'disconnect'处理器不采取第二个参数。
register_namespace(namespace_handler )
注册名称空间处理程序对象。
参数:
namespace_handler # [`Namespace`](https://python-socketio.readthedocs.io/en/latest/#socketio.Namespace "socketio.Namespace") 处理命名空间的所有事件通信的子类的实例。
rooms(sid,namespace = None )
返回客户所在的房间。
参数:
sid # 客户端的会话ID。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
send(data, room=None, skip_sid=None, namespace=None, callback=None, **kwargs)
发送消息给一个或多个连接的客户端。
这个函数用名字发出一个事件'message'
。使用 emit()
发出自定义事件的名称。
参数:
data # 要发送给客户端或客户端的数据。数据可以是类型的str,bytes,list或dict。如果一个 listor dict,数据将被序列化为JSON。
room # 消息的接收者。这可以设置为客户端的会话ID来处理该客户的房间,或者由应用程序创建的任何自定义房间。如果省略该参数,则将事件广播给所有连接的客户端。
skip_sid # 广播到房间或所有客户端时要跳过的客户端的会话ID。这可以用来防止邮件被发送到发件人。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则该事件将发送到默认名称空间。
callback # 如果给定,将调用此函数来确认客户端已收到消息。传递给函数的参数是客户端提供的参数。回拨函数只能在寻址单个客户端时使用。
ignore_queue # 仅在配置消息队列时使用。如果设置为True,该事件直接发送到客户端,而不通过队列。这是更高效的,但只有在使用单个服务器进程时才有效。建议始终将此参数保留为其默认值False。
sleep(seconds=0)
使用适当的异步模式睡眠所需的时间。
这是一个应用程序可用于将任务置于睡眠状态的实用程序功能,无需担心为选定的异步模式使用正确的调用。
start_background_task(target, *args, **kwargs)
使用适当的异步模型开始后台任务。
这是应用程序可用于使用与所选异步模式兼容的方法启动后台任务的实用程序功能
参数:
target # 要执行的目标函数。
args # 传递给函数的参数。
kwargs # 传递给函数的关键字参数。
这个函数返回一个与Python标准库中的 Thread
类兼容的对象。这个对象的 start()
方法已经被这个函数调用。
transport(sid )
返回客户端使用的传输名称。
这个函数返回的两个可能的值是'polling' 和'websocket'。
参数:
sid # 客户端的会话
三、socketio.AsyncServer
class socketio.AsyncServer(client_manager=None, logger=False, json=None, async_handlers=False, **kwargs)
一个使用asyncio的Socket.IO服务器。
这个类实现了完全兼容的Socket.IO web服务器,支持websocket和长轮询传输,与Python 3.5+和asyncio框架兼容。
参数:
client_manager # 将管理客户端列表的客户端管理器实例。当这被省略时,客户列表被存储在内存中的结构中,所以不能使用多个连接的服务器。
logger # 启用日志记录设置True或传递记录器对象使用。禁用日志记录设置为False。
json # 用于编码和解码数据包的替代json模块。自定义json模块必须具有dumps与loads 标准库版本兼容的功能。
async_handlers # 如果设置为True,事件处理程序在不同的线程中执行。要同步运行处理程序,请设置为False。默认是False。
kwargs # 底层Engine.IO服务器的连接参数。 [具体参数参考](https://python-socketio.readthedocs.io/en/latest/)
attach(app,socketio_path ='socket.io' )
将Socket.IO服务器连接到应用程序。
close_room(room,namespace = None
关闭一个聊天室。
该功能可以移除给定房间内的所有客户端。
参数:
room # 房间名称。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
注意:这个方法是一个协程。
disconnect(sid,namespace = None )
断开客户端。
参数:
sid # 客户端的会话ID。
namespace # 要断开的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
注意:这个方法是一个协程。
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )
向一个或多个连接的客户端发出自定义事件。
参数:
event # 事件名称。它可以是任何字符串。事件名称'connect','message'和'disconnect'保留,不应该使用。
data # 要发送给一个或多个客户端的数据。数据可以是类型的str,bytes,list或dict。如果一个 list 或者 dict,数据将被序列化为JSON。
room # 消息的接收者。这可以设置为客户端的会话ID来处理该客户的房间,或者由应用程序创建的任何自定义房间。如果省略该参数,则将事件广播给所有连接的客户端。
skip_sid # 广播到房间或所有客户端时要跳过的客户端的会话ID。这可以用来防止邮件被发送到发件人。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则该事件将发送到默认名称空间。
callback # 如果给定,将调用此函数来确认客户端已收到消息。传递给函数的参数是客户端提供的参数。回拨函数只能在寻址单个客户端时使用。
ignore_queue # 仅在配置消息队列时使用。如果设置为True,该事件直接发送到客户端,而不通过队列。这是更高效的,但只有在使用单个服务器进程时才有效。建议始终将此参数保留为其默认值False。
注意:这个方法是一个协程。
enter_room(sid,room,namespace = None )
将一个sid代表的客户端拉入一个聊天室。
此功能将客户端添加到一个房间。该emit()
和 send()
功能可以有选择地事件报告给在一个房间里的所有的客户。
参数:
sid # 客户端的会话ID。
room # 聊天室名称。如果房间不存在,则创建它。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
handle_request(*args, **kwargs)
处理来自客户端的HTTP请求。这是Socket.IO应用程序的入口点。这个函数返回HTTP响应正文传递给客户端。
注意:这个方法是一个协程。
leave_room(sid, room, namespace=None)
离开房间。
这个功能从房间中删除客户端。
参数:
sid # 客户端的会话ID
room # 聊天室名称
namespace # 事件的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
on(event,handler = None,namespace = None )
注册事件处理程序。
参数:
event # 事件名称。它可以是任何字符串。事件名称'connect','message'和'disconnect'保留,不应使用。
handler # 应该被调用来处理事件的函数。当没有给出这个参数时,该方法充当处理函数的装饰器。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则处理程序将与默认名称空间关联。
示例:
# as a decorator:
@socket_io.on('connect', namespace='/chat')
def connect_handler(sid, environ):
print('Connection request')
if environ['REMOTE_ADDR'] in blacklisted:
return False # reject
# as a method:
def message_handler(sid, msg):
print('Received message: ', msg)
eio.send(sid, 'response')
socket_io.on('message', namespace='/chat', message_handler)
处理函数接收sid客户端的(会话ID)作为第一个参数。'connect'事件处理程序接收WSGI环境作为第二个参数,并且可以返回False到拒绝连接。'message'自定义事件名称的处理程序和处理程序将接收消息有效内容作为第二个参数。从消息处理程序返回的任何值将传递给客户端的确认回调函数(如果存在)。该 'disconnect'处理器不采取第二个参数。
register_namespace(namespace_handler )
注册名称空间处理程序对象。
参数:
namespace_handler # [`Namespace`](https://python-socketio.readthedocs.io/en/latest/#socketio.Namespace "socketio.Namespace") 处理命名空间的所有事件通信的子类的实例。
rooms(sid,namespace = None )
返回sid客户所在的所有的房间。
send(data,room = None,skip_sid = None,namespace = None,callback = None,** kwargs )
发送消息给一个或多个连接的客户端。
这个函数用名字发出一个事件'message'
。使用 emit()
发出自定义事件的名称。
参数:
data # 要发送给一个或多个客户端的数据。数据可以是类型的str,bytes,list或dict。如果一个 listor dict,数据将被序列化为JSON。
room # 消息的接收者。这可以设置为客户端的会话ID来处理该客户的房间,或者由应用程序创建的任何自定义房间。如果省略该参数,则将事件广播给所有连接的客户端。
skip_sid # 广播到房间或所有客户端时要跳过的客户端的会话ID。这可以用来防止邮件被发送到发件人。
namespace # 事件的Socket.IO命名空间。如果省略此参数,则该事件将发送到默认名称空间。
callback # 如果给定,将调用此函数来确认客户端已收到消息。传递给函数的参数是客户端提供的参数。回拨函数只能在寻址单个客户端时使用。
ignore_queue # 仅在配置消息队列时使用。如果设置为True,该事件直接发送到客户端,而不通过队列。这是更高效的,但只有在使用单个服务器进程时才有效。建议始终将此参数保留为其默认值False。
注意:这个方法是一个协程。
sleep(seconds=0)
使用适当的异步模型睡眠给定的时间。
start_background_task(target, *args, **kwargs)
使用适当的异步模型开始后台任务。
这是应用程序可用于使用与所选异步模式兼容的方法启动后台任务的实用程序功能。
参数:
target # 要执行的目标函数。必须是一个协程
args # 传递给函数的参数
kwargs # 传递给函数的关键字参数
返回值是一个asyncio.Task对象。
注意:这个方法是一个协程。
transport(sid)
返回客户端使用的传输名称。
这个函数返回的两个可能的值是'polling' 和'websocket'。
参数:
sid # 客户端的会话。
四、class socketio.Namespace
1.class socketio.Namespace(namespace = None )
基于类的命名空间的基类。
基于类的命名空间是一个包含Socket.IO命名空间的所有事件处理程序的类。该事件处理程序与前缀类的方法on_,比如on_connect,on_disconnect, on_message,on_json,等。
参数:
namespace # 与该类中定义的所有事件处理函数一起使用的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
close_room(room,namespace = None
关闭一个聊天室。
与socketio.Server.close_room()
方法唯一的区别是,如果namespace没有给出参数,则使用与该类关联的名称空间。
disconnect(sid,namespace = None )
断开客户端。
与socketio.Server.disconnect()
方法唯一的区别是,如果namespace没有给出参数,则使用与该类关联的名称空间。
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None )
向一个或多个连接的客户端发出自定义事件。
与该socketio.Server.emit()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
enter_room(sid,room,namespace = None )
进入一个聊天室。
与该socketio.Server.enter_room()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
leave_room(sid,room,namespace = None )
离开房间。
与该socketio.Server.leave_room()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
rooms(sid,namespace = None )
返回给定sid客户所在的所有房间。
与该socketio.Server.rooms()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
send(data,room = None,skip_sid = None,namespace = None,callback = None )
发送消息给一个或多个连接的客户端。
与该socketio.Server.send()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
trigger_event(event,* args )
将事件分派给适当的处理程序方法。
在最常见的用法中,这个方法不会被子类重载,因为它将事件路由到方法。但是,如果需要特殊的调度规则,或者需要捕获所有事件的单个方法,则可以重写此方法。
五、class socketio.AsyncNamespace
class socketio.AsyncNamespace(namespace = None )
基于asyncio类的名称空间的基类。
基于类的命名空间是一个包含Socket.IO命名空间的所有事件处理程序的类。该事件处理程序与前缀类的方法on_,比如on_connect,on_disconnect, on_message,on_json,等。这些可以是常规函数或协程。
参数:
namespace # 与该类中定义的所有事件处理函数一起使用的Socket.IO命名空间。如果省略此参数,则使用默认名称空间。
close_room(room,namespace = None )
关闭一个聊天室。
与该socketio.Server.close_room()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
注意:这个方法是一个协程。
disconnect(sid,namespace = None )
断开客户端。
与该socketio.Server.disconnect()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
注意:这个方法是一个协程。
emit(event,data = None,room = None,skip_sid = None,namespace = None,callback = None )
向一个或多个连接的客户端发出自定义事件。
与该socketio.Server.emit()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
注意:这个方法是一个协程。
enter_room(sid,room,namespace = None )
进入一个房间。
与该socketio.Server.enter_room()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
leave_room(sid,room,namespace = None )
将给定sid的用户移除房间。
与该socketio.Server.leave_room()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
rooms(sid,namespace = None )
返回客户所在的房间。
与该socketio.Server.rooms()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
send(data,room = None,skip_sid = None,namespace = None,callback = None )
发送消息给一个或多个连接的客户端。
与该socketio.Server.send()
方法唯一的区别是,如果namespace
没有给出参数,则使用与该类关联的名称空间。
注意:这个方法是一个协程。
trigger_event(event,* args )
将事件分派给适当的处理程序方法。
在最常见的用法中,这个方法不会被子类重载,因为它将事件路由到方法。但是,如果需要特殊的调度规则,或者需要捕获所有事件的单个方法,则可以重写此方法。
注意:这个方法是一个协程。
六、socketio.BaseManager 类
管理客户端连接。
这个班跟踪所有客户和他们所在的房间,以支持消息广播。该类使用的数据存储在内存结构中,仅适用于单个进程服务。更复杂的存储后端可以通过子类来实现。
close_room(room, namespace)
从房间中删除所有参与者。
connect(sid,namespace )
将客户端连接注册到名称空间。
disconnect(sid,namespace )
从命名空间注册客户端断开连接。
emit(event,data,namespace,room = None,skip_sid = None,callback = None,** kwargs )
将消息发送到单个客户端,一个房间或连接到命名空间的所有客户端。
enter_room(sid,namespace,room )
添加一个客户端到一个房间。
get_namespaces()
用活动的命名空间名称返回一个迭代。
get_participants(namespace,room )
返回一个房间里的积极参与者迭代。
get_rooms(sid,namespace )
返回客户所在的房间。
initialize()
在收到第一个请求之前调用。子类可以在这里添加它们的初始化代码。
leave_room(sid,namespace,room
从聊天室中移除一个客户端。
pre_disconnect(sid,namespace )
将客户端置于未连接列表中。
这允许客户端数据结构在调用断开连接处理程序时出现,但仍然认识到客户端即将离开的事实。
trigger_callback(sid,namespace,id,data )
调用应用程序回调。
七、class socketio.PubSubManager
class socketio.PubSubManager(channel ='socketio',write_only = False )
管理附加到发布/订阅后端的客户列表。
这是一个基类,它允许多个服务器共享客户端列表,服务器通过发布/订阅后端来传递事件。pub / sub后端的使用还允许连接到后端的任何客户端发送发送到Socket.IO客户端的事件。
实际的后端必须由子类来实现,这个类只提供一个pub / sub通用框架。
参数:
channel - 服务器发送和接收通知的频道名称
emit(event,data,namespace = None,room = None,skip_sid = None,callback = None,** kwargs )
将消息发送到单个客户端,一个房间或连接到命名空间的所有命名空间。
此方法将消息传递给通过消息队列连接的所有服务器。
参数与在Server.emit()
。中相同。
八、class socketio.KombuManager
class socketio.KombuManager(url ='amqp:// guest:guest @ localhost:5672 //',channel ='socketio',write_only = False )
使用kombu进行进程间消息传递的客户端管理者。
该类使用RabbitMQ,Redis或kombu支持的任何其他消息传递机制实现跨多个进程的事件共享的客户端管理器后端。
要使用kombu后端,请Server
按以下步骤初始化实例:
url = 'amqp://user:password@hostname:port//'
server = socketio.Server(client_manager=socketio.KombuManager(url))
参数:
url # * 后端消息传递队列的连接URL。例如连接URL是`'amqp://guest:guest@localhost:5672//'`与`'redis://localhost:6379/'`分别对的RabbitMQ和Redis的。有关如何构建连接URL的更多信息,请参阅[kombu文档](http://kombu.readthedocs.org/en/latest/userguide/connections.html#urls)。
* **频道** - 服务器发送和接收通知的频道名称。在所有服务器中必须相同。
write_only # 如果设置为ot True,则只初始化为发出事件。的缺省False初始化类用于发射和接收。
九、class socketio.RedisManager
class socketio.RedisManager(url ='redis:// localhost:6379/0',channel ='socketio',write_only = False )
Redis的客户端管理者。
这个类实现了一个Redis后端,用于跨多个进程的事件共享。只是作为一个例子来说明如何构建一个自定义后端,因为kombu后端完全可以支持Redis消息队列。
要使用Redis后端,请Server
按以下步骤初始化实例:
url = 'redis://hostname:port/0'
server = socketio.Server(client_manager=socketio.RedisManager(url))
参数:
url # Redis服务器的连接URL。对于在同一主机上运行的默认Redis存储,请使用redis://。
channel # 服务器发送和接收通知的频道名称。在所有服务器中必须相同。
write_only # 如果设置为ot True,则只初始化为发出事件。的缺省False初始化类用于发射和接收。
十、socketio.AsyncManager类
管理asyncio服务器的客户端管理者。
close_room(room, namespace)
从房间中移除所有参与者。
注意:这个方法是一个协程。
connect(sid, namespace)
将客户端连接注册到名称空间。
disconnect(sid, namespace)
从命名空间注册客户端断开连接。
emit(event, data, namespace, room=None, skip_sid=None, callback=None, **kwargs)
将消息发送到单个客户端,一个房间或连接到命名空间的所有客户端。
注意:这个方法是一个协程。
enter_room(sid, namespace, room)
添加一个客户端到一个房间。
get_namespaces()
用活动的命名空间名称返回一个迭代。
get_participants(namespace, room)
返回一个房间里的活跃的参与者迭代。
get_rooms(sid, namespace)
返回客户所在的所有房间。
initialize()
在收到第一个请求之前调用。子类可以在这里添加它们的初始化代码。
leave_room(sid, namespace, room)
从客房中删除一个客户端。
pre_disconnect(sid, namespace)
将客户端置于将要断开连接的(to-be-disconnected )列表中。
这允许客户端数据结构在调用断开连接处理程序时出现,但仍然认识到客户端即将离开的事实。
trigger_callback(sid, namespace, id, data)
调用应用程序回调。
注意:这个方法是一个协程。
十一、class socketio.AsyncRedisManager
class socketio.AsyncRedisManager(url ='redis:// localhost:6379/0',channel ='socketio',write_only = False )
基于Redis的asyncio服务器客户端管理器。
这个类实现了一个Redis后端,用于跨多个进程的事件共享。只是作为一个例子来说明如何构建一个自定义后端,因为kombu后端完全可以支持Redis消息队列.
要使用Redis后端,请Server
按以下步骤初始化实例:
server = socketio.Server(client_manager=socketio.AsyncRedisManager(
'redis://hostname:port/0'))
参数:
url # Redis服务器的连接URL。对于在同一主机上运行的默认Redis存储,请使用redis://。
channel # 服务器发送和接收通知的频道名称。在所有服务器中必须相同。
write_only # 如果设置为True,则只初始化为发出事件。的缺省False初始化类用于发射和接收。