長連線(輪詢,心跳,socket)

2021-10-08 01:25:54 字數 621 閱讀 5552

概念

表示客戶端和伺服器端保持聯絡,客戶端向伺服器端一直獲取資料,或者是伺服器端一直向客戶端推送資料。

基本的長連線方式

輪詢表示客服端利用定時器原理(setinterval)間隔時間內向伺服器請求最新資料。

心跳原理跟輪詢類似,但是心跳在一段時間內沒有向到伺服器請求,就會認為客戶端狀態異常。

socket 客戶端可以通過socket跟伺服器端建立長連線,伺服器端有最新資料就會向客戶端推送。

輪詢和socket比較

1.輪詢會增加客戶端的消耗,因為有乙個定時器在不停的執行

2.輪詢是客戶端向伺服器端請求資料,socket是伺服器端向客戶端推送資料

3.socket的效率高,實時性強

4.socket在web開發中相容性差,在web開發中使用websocket模板,早期的瀏覽器不支援websocket,因為輪詢是定時傳送ajax請求,所以一般瀏覽器都支援。

socket.io

他是乙個外掛程式,用於web中做socket通訊開發。

就目前而言node.js比較適合做socket的伺服器開發的技術,應用場景:無人售貨機,智慧型終端,網路遊戲

關於socket長連線的心跳包

出於最近對im研究的興趣,看到smack裡有個30s傳送乙個空訊息的執行緒,了解了下關於心跳包,keepalive的知識。tcp的socket本身就是長連線的,那麼為什麼還要心跳包呢?搜尋到的資料解釋如下 一 內網機器如果不主動向外發起連線,外網機沒法直連內網的,這也是內網機安全的原因之一吧,又因為...

Http 長連線 短連線 長輪詢 短輪詢

短連線 每次http請求都會建立tcp連線,管理容易 長連線 只需要建立一次tcp連線,以後http請求重複使用同乙個tcp連線,管理難 http1.1規定了預設保持長連線 http persistent connection 也有翻譯為持久連線 資料傳輸完成了保持tcp連線不斷開 不發rst包 不...

HTTP 長連線 短連線 長輪詢 短輪詢

http 1.0需要使用keep alive引數來告知伺服器端要建立乙個長連線,而http1.1預設支援長連線,http的長連線很容易在空閒後自動斷開,一般來說這個時間是300s左右。http是基於tcp ip協議的,建立乙個tcp連線是需要經過三次握手的,有一定的開銷,如果每次通訊都要重新建立連線...