我在使用WebSockets时遇到了一些麻烦,并且非常高兴看到运行Tornado服务器的基本websocket连接是多么容易。我从来没有在今天之前使用过龙卷风,虽然我喜欢我所看到的,但我对它的使用有一些问题。
首先,我正在使用WebSockets,这样我就可以在两台或多台客户机之间进行低开销通信。 (出于对话的目的,我们只是说它是一个聊天客户端)显然我可以从多台机器连接到服务器,它们都可以将消息推送到服务器,服务器可以响应,这太棒了!但这并不比标准的AJAX请求好太多。如果我有持久连接,我希望能够将数据推送到客户端。最简单的方案是用户1向服务器发布消息,并在收到消息后立即将其推送给用户2.
那么实现这一目标的好方法是什么?据我所知,在Tornado中除了将消息放在某个数据存储区并让所有其他连接轮询新信息之外,没有办法在连接之间进行通信。尽管如此,这让我感到非常笨拙,因为那时你真正做的就是将轮询过程从客户端移动到服务器。
当然,我可能会在这里完全咆哮错误的树。毫无疑问,龙卷风根本不适合这项工作,如果是这样的话,我会很高兴听到替代方案的建议!
答案 0 :(得分:3)
这是一个使用龙卷风,WebSockets和redis的聊天服务器:https://gist.github.com/pelletier/532067(已更新:已修复链接,感谢@SamidhT)
答案 1 :(得分:0)
虽然答案已被接受:使用其他服务对我来说似乎效率仍然很低。你为什么不用共享内存+条件变量/信号量?听起来你有一个标准的消费者 - 生产者问题