2011-09-21 114 views
9

Facebook聊天如何工作?任何人都可以給我想法嗎?我的意思是他們使用websocket或AJAX?他們如何實施它?Facebook聊天如何工作?

+0

使用螢火蟲看看facebook頁面;特別是控制檯選項卡。 – Alfwed

+0

只是一個提示:XMPP –

回答

10

這是一個comet (see wikipedia)模型:

Comet是一個Web應用程序模型,其中一個長期持有的HTTP請求 允許Web服務器將數據推到瀏覽器,而瀏覽器 明確要求它。彗星是一個總括術語,包含用於實現這種交互的多種技術。所有這些方法 都依賴於瀏覽器中默認包含的功能,例如JavaScript, ,而非非默認插件。 Comet方法與網絡的原始模型 不同,瀏覽器一次請求完整的 網頁。

彗星框架的例子是APE。這是爲JavaScript,但彗星不僅可以寫入JavaScript。

0

用戶通過稱爲WebSocket握手的過程建立WebSocket連接。該過程從用戶向服務器發送常規HTTP請求開始。此請求中包含升級標頭,通知服務器用戶希望建立WebSocket連接。 WebSocket URL使用ws方案。還有用於安全WebSocket連接的wss,相當於HTTPS。 如果服務器支持WebSocket協議,則它同意升級並通過響應中的升級標題進行通信。 現在握手已完成,初始HTTP連接被替換爲使用相同底層TCP/IP連接的WebSocket連接。此時任何一方都可以開始發送數據。

使用WebSockets,您可以隨心所欲地傳輸儘可能多的數據,而不會產生與傳統HTTP請求相關的開銷。數據通過WebSocket作爲消息傳輸,每個消息由一個或多個包含您要發送的數據(有效負載)的幀組成。爲了確保消息在到達客戶端時能夠被正確地重建,每個幀都以4-12字節的有效負載數據作爲前綴。使用這種基於幀的消息傳遞系統有助於減少傳輸的非有效載荷數據量,從而顯着減少延遲。