WebSocket交叉连接通信(Tornado?)

WebSocket交叉连接通信(Tornado?),websocket,tornado,Websocket,Tornado,我在websocket上摸索了一下,对于运行一个能够进行基本websocket连接的Tornado服务器是多么容易,我感到非常高兴。在今天之前,我从未使用过龙卷风,虽然我喜欢我所看到的,但关于它的使用,我有几个问题 首先,我使用WebSocket是为了在两台或多台客户机之间进行低开销的通信。(为了对话的目的,让我们假设它是一个聊天客户端)显然,我可以从多台机器连接到服务器,它们都可以将消息推送到服务器,服务器可以响应,这太棒了!但这并不比标准AJAX请求好多少。如果我有一个持久连接,我希望能够将

我在websocket上摸索了一下,对于运行一个能够进行基本websocket连接的Tornado服务器是多么容易,我感到非常高兴。在今天之前,我从未使用过龙卷风,虽然我喜欢我所看到的,但关于它的使用,我有几个问题

首先,我使用WebSocket是为了在两台或多台客户机之间进行低开销的通信。(为了对话的目的,让我们假设它是一个聊天客户端)显然,我可以从多台机器连接到服务器,它们都可以将消息推送到服务器,服务器可以响应,这太棒了!但这并不比标准AJAX请求好多少。如果我有一个持久连接,我希望能够将数据推送到客户端。最简单的可能场景是用户1向服务器发送消息,服务器收到消息后立即将其推送到用户2

那么,实现这一目标的好方法是什么呢?据我所知,在Tornado中,除了将消息放在某个数据存储中并让所有其他连接轮询新信息之外,连接之间没有其他通信方式。不过,这让我觉得非常笨拙,因为在这一点上,您真正要做的就是将轮询过程从客户端移动到服务器


当然,我可能在这里找错了方向。龙卷风显然不是这项工作的合适工具,如果是这样的话,我很乐意听到替代方案的建议

这是一个使用tornado、WebSockets和redis的聊天服务器:(更新了:链接已修复,谢谢@SamidhT)

尽管答案已经被接受:使用不同的服务对我来说仍然效率很低。为什么不使用共享内存+条件变量/信号量呢?听起来你好像遇到了一个标准的消费者-生产者问题

太好了!那正是我要找的东西。现在我看代码似乎有点明显,但事后诸葛亮总是20/20,是吗?另外,感谢您无意中将我指向Redis,这实际上是我接下来要搜索的东西!(基于非易失性内存的数据存储)旧链接已断开。这是新的