代码之家  ›  专栏  ›  技术社区  ›  Toji

WebSocket交叉连接通信(Tornado?)

  •  2
  • Toji  · 技术社区  · 14 年前

    我对WebSocket有点摸不着头脑,我很高兴能让一台Tornado服务器运行起来,它可以进行基本的WebSocket连接。我以前从未使用过龙卷风,虽然我喜欢我所看到的,但我对它的使用有一些疑问。

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

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

    当然,我可能完全错了。毫无疑问,龙卷风并不是这项工作的合适工具,如果是这样的话,我很乐意听到其他选择的建议!

    2 回复  |  直到 14 年前
        1
  •  3
  •   kanaka    11 年前

    这里有一个使用Tornado、WebSockets和Redis的聊天服务器: https://gist.github.com/pelletier/532067 ( 更新 :链接已修复,谢谢@samidht)

        2
  •  0
  •   griffin    11 年前

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