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

这个聊天是使用“长轮询”还是“HTTP流”?

  •  0
  • xRobot  · 技术社区  · 15 年前

    这个聊天是使用“长轮询”还是“HTTP流”?

    http://go-mono.com/moonlight/chat.aspx

    1 回复  |  直到 13 年前
        1
  •  3
  •   Matt Ball    15 年前

    这不是什么简单的事情。它使用 http://www.mibbit.com/chat 这是一个用JavaScript和Java编写的完整IRC客户端。博客地址 http://blog.mibbit.com/ .

    编辑: Here's your answer .

    我开始工作的第一部分是浏览器和服务器之间的通信。使用2个xmlhttpRequests完成。第一个简单的方法是将数据从浏览器发送到服务器。它利用保持活力,以最小化新的连接。

    第二个XHR是__receive lazy polling__。它连接到服务器,并且服务器将其保持打开状态,直到有可用的消息或超时到期。这一个也是保持活动的,所以下一个请求会断开同一个连接。

    您最终得到的是两个对服务器开放的连接,包括数据包(在本例中是JSON)和一些HTTP头。 为了确保服务器的规模,我用NIO在Java中编写了一个定制的WebServer。它在一个线程中处理所有的连接,如我所说,可以扩展到数万个连接。

    如果客户机请求一个新的连接,它会向Web服务器发送一个请求,然后Web服务器连接并开始代理等。如果是IRC连接,它也会运行一个Ident Server,这样IRC服务器就可以识别各个浏览器。我研究了现有的框架等来做这类事情,但是我重视学习它是如何工作的,并且认为我的用例可能足够具体,能够比一般框架更优化。