前言

Socket.IO 是一個用來實現(xiàn)實時雙向通信的框架,其本質是基于 WebSocket 技術。

我們首先來聊聊 WebSocket 技術,先設想這么一個場景:

· 用戶小A,打開了某個網(wǎng)站的充值界面,該界面上有一個付款的二維碼。

· 當小A 用某寶的 APP 掃碼付款之后,網(wǎng)頁要自動跳轉到付款成功的界面。最簡單的方法就是網(wǎng)頁每隔一段時間就請求一次服務器——“怎么樣?那貨付款沒有?”,“怎么樣?還沒付嗎?”,“怎么樣?這次總該付了吧”。

· 當接收到服務端返回確認付款的標識后,頁面再進行跳轉。

這種定時對服務端發(fā)送 HTTP 請求的技術也被稱為“輪詢”。輪詢的缺點也顯而易見,短時間內的多次訪問無疑會對服務器造成很大壓力。

  后來,人們發(fā)明了長輪詢技術。這與短輪詢的區(qū)別在于,每次瀏覽器請求服務器后,服務器并不會立即返回“用戶還未付款”的結果,而是一直將 HTTP 保持在掛起狀態(tài),只有當用戶付款后才會返回給瀏覽器 “用戶已經(jīng)付款” 的結果。當然,如果用戶在規(guī)定時間內仍未付款還是會斷開此次連接,

網(wǎng)友評論