python-socketio 多进程部署

2021-03-11 21:33

阅读:482

socket.io要实现多进程以及广播,房间等功能,势必需要接入一个redis之类的消息队列,进而socket.io的emit会调用对应队列管理器pubsub_manager的emit方法,比如用redis做消息队列则最终调用 redis_manager中的_publish()

方法通过redis的订阅发布功能将消息推送到flask_socketio频道。另一方面,每个进程在初始化时都订阅了 flask_socketio频道,而且都有一个协程(或线程)在监听频道中是否有消息,一旦有消息,就会调用pubsub_manager._handle_emit()方法对本机对应的socket发送对应的消息,最终是通过socket.io服务器的_emit_internal()方法实现对本机中room为sid的所有socket发送消息的,如果room为None,则就是广播,即对所有连接到本机的所有客户端推送消息。

作者:ssjhust
链接:https://juejin.cn/post/6844903632819716110
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


评论


亲,登录后才可以留言!