这不是什么简单的事情。它使用
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服务器就可以识别各个浏览器。我研究了现有的框架等来做这类事情,但是我重视学习它是如何工作的,并且认为我的用例可能足够具体,能够比一般框架更优化。