2010-03-23 68 views

回答

3

这不是那么简单。它使用http://www.mibbit.com/chat,这是一个用Javascript和Java编写的完整的IRC客户端。博客http://blog.mibbit.com/

编辑:Here's your answer

我工作的第一部分是浏览器和服务器之间的通信。这是使用2个XMLHttpRequests完成的。第一个简单的方法是将数据从浏览器发送到服务器。它利用保持活力,以最大限度地减少新的连接。

第二个XHR是'接收懒惰轮询'之一。它连接到服务器,并且服务器将其保持打开状态,直到有消息可用或超时过期。这一个也是保持活动状态,所以下一个请求沿着同一个连接。

你最终得到的结果是2个连接对服务器保持开放,数据包(本例中是json)和一些http头文件。 为了确保服务器可以扩展,我使用nio在java中编写了一个自定义webserver。它处理单个线程中的所有连接,正如我所说,可扩展到数以万计的连接。

如果客户端请求一个新的连接,它会向web服务器发送一个请求,然后连接出去并启动代理服务器等等。它还在irc连接的情况下运行ident服务器,以便irc服务器可以识别个人浏览器。我研究了现有的框架等来做这种事情,但我很重视学习它是如何工作的,并且认为我的用例可能足够具体以便能够优化比一般框架更多的功能。

+3

因此,这将是“长期投票”,然后;) – caf 2010-03-24 01:07:40