java - 为什么微信和QQ信息可以秒达?
PHP中文网
PHP中文网 2017-04-18 10:41:07
0
4
477
PHP中文网
PHP中文网

认证0级讲师

全部回覆(4)
巴扎黑

個人猜測,僅供參考

  • QQ 伺服器群是很強大的,可以想像,一個伺服器只對應著一部分用戶,而且可能保持著長連續

  • QQ 發送文件和圖片的時候,可以直接在客戶端之間建立連接,那麼發送訊息也可以

  • 客戶端之間的直接連線其實有時候不如透過伺服器快——如果伺服器和網路夠強的話

  • QQ 伺服器恐怕不是放在一個地方,CDN 的原理知道吧?

左手右手慢动作

無他,唯網路好而已。

樓上@邊城說的不錯,但是他說的第一點與訊息傳達速度無關,集群只是提高服務端承載量。

阿神

個人覺得:當你發送訊息的時候,你需要有一個指定動作,例如點開你要發訊息的那個人聊天窗口,當你點開的一瞬間,向伺服器發送訊息,建立對話連接,當然需要很好的服務器的支撐。收件也是一樣,當其他人點開你的視窗聊天時,伺服器會自動和你建立連線並向你發送其他人的訊息。當一段時間沒有訊息交互,或軟體進程偵測關閉,就斷開連線。這樣可以大大的減緩伺服器的壓力並建立即時連線。

Peter_Zhu

我來補充一下:
@邊城 說的“在客戶端之間建立連接”,存在一些問題。這樣想,如果直接建立連接,伺服器上就不會有你和對方發送的文件,當你們斷開連接以後,你還能再次下載某個文件,這個文件從哪裡來呢?你可以說緩存。 那麼消息呢?我們知道qq和微信會儲存你和對方的所有通話(不是不能,只是某些時候案件沒有到達聯繫騰訊的程度而已),所以兩者之間建立連接說法有些欠妥。
@晴天 說的點開視窗時伺服器與你建立連線。首先不是當你點開視窗的時候這個連線才會建立。其次,如果伺服器自動和你建立連接,那稱作為推送,顯然這裡應該是手機(軟體)主動與伺服器建立連接,伺服器只能listen請求。
除了上面幾位說的,我還有一點補充就是發送訊息的大小。多個對比發送一個字VS發送100個字(超過1個請求的最大長度),發送幾個字vs發送圖片,前者是因為建立的連接不同,後者是傳輸協議、伺服器、存儲演算法不同。總結來說秒達有一部分原因在於數據量小。其他的還包括伺服器架構,網路等。
-----分割線---
說一個有意思的內容,就是表情。我們知道發送表情可以用文字來取代。例如我們發送[勝利],會出現勝利的表情。同樣我們發送“[勝利]”和發送相同數量的“[]勝利[]勝利[]勝利[]勝利”,然後看一下那個會“到達”更快。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板