2010-03-23 67 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