【问题标题】:Make a web chat with twisted与twisted进行网络聊天
【发布时间】:2009-04-14 13:16:11
【问题描述】:

我已经进行了一个可以通过 Telnet 连接的聊天。我的聊天当前实现为 Twisted TCP 服务器。如何将其转换为浏览器的聊天?

我想我应该使用彗星服务器(例如 Orbited)来同时提供静态 HTML 和动态内容。快速可靠的聊天是否需要这样的彗星服务器?

【问题讨论】:

    标签: comet twisted


    【解决方案1】:

    Comet 是最好的选择,无需使用任何特殊的东西(如 Flash,见下文)。这是一项经过验证的技术,已被许多大型网站使用,例如 Gmail 的聊天和 Facebook 的聊天。

    您唯一的其他选项是轮询,但这有时会在服务器上变得有点紧张。你基本上必须权衡服务器负载和速度——如果你经常轮询,你会得到一个响应速度非常快的客户端,但是你会给服务器带来很多负载。轮询太少,负载很轻,但客户端只能每 n 秒接收一次消息,因此看起来很慢。

    如果您决定进行投票,您可以随时创建一个“退避”系统。例如,该页面每 2 秒检查一次是否有任何聊天消息发送。它这样做了 5 次,如果什么都没有,它将延迟增加到 3 秒。它这样做了 5 次,然后什么也没做,它会持续 4 秒..等等。发送聊天消息后,它会恢复到最短延迟。

    另一个更好的选择是使用 Flex 或 Flash 客户端。这样,您可以只使用仅发送数据(如果有)的 TCP 套接字。但前提是您真的想在自己的网站上安装 Flash 应用程序。

    【讨论】:

    • 谢谢,彗星服务器为聊天应用程序提供了一个接口,无需请求即可将数据发送到浏览器,我理解了吗? “这样,你可以只使用 TCP 套接字,它只发送数据(如果有的话)。” - 有了 Flash,我就可以使用与 Telnet 相同的后端应用程序,对吧?
    • 你仍然需要向 Comet 提出请求,但技术是什么,基本上是一个很长的轮询。您的网页将请求一个 PHP 页面,但该 PHP 请求将保持打开状态,直到服务器实际有数据要发送。这种“长期投票”可以持续几分钟(与常规投票相反......(续)
    • ...如果没有要发送的内容,它会快速检查并返回)。你可以在zeitoun.net/articles/comet_and_php/start 看到一个例子。是的,如果您选择 TCP with flash,您可以 Telnet 进入,因为 Telnet 也在 TCP 上运行。但是,您将不得不使用基于文本的协议
    【解决方案2】:

    是的!检查www.meebo.com!他们使用彗星作为他们的基本平台!

    【讨论】:

      猜你喜欢
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      相关资源
      最近更新 更多