我将tornado.websocket.WebSocketHandler
的实例存储在字典中,以便在为特定用户发送消息时,我可以将消息路由到相应的侦听器。
这意味着当服务器退回时我们会丢失监听器细节,客户端必须创建一个新的WebSocket实例。
我想实现在持久存储中存储侦听器详细信息的方法,可能是redis但不确定最佳方法。
我可以挑选WebSocketHandler
实例并写入redis,然后当特定用户的消息需要路由到他们的客户端时读取和取消,但这感觉有点hacky。是否有一个不太讨厌的解决方案?
答案 0 :(得分:0)
您无法有效地挑选WebSocketHandler,因为无法以这种方式传输连接的套接字。你可能可以用multiprocessing.Queue做一些事情,而不是简单的酸洗,但这最好是棘手和hacky。客户端必须能够在任何情况下创建新的WebSocket连接以从网络中断中恢复;在服务器重新启动时,只需执行相同操作即可。