消息推送實現方式


消息推送:

  使用消息推送的方法有很多,原理大致是:移動端與消息服務器保持一個長連接,一旦服務器有消息就推給客戶端,客戶端收到消息做相應的處理。

消息推送的幾種實現方式:

  B/S架構的系統多使用HTTP協議,所以首先來看看HTTP協議:

HTTP協議的特點:
  列表內容
  無狀態性;
  通過Internet發送請求消息和響應消息;
  使用端口接收和發送消息,默認為80端口;但是底層還是使用Socket完成。

  HTTP協議決定了服務器與客戶端之間的連接方式,無法直接實現消息推送。 
  所以就有一些變相的解決方法: 雙向通信和消息推送

1.輪詢:

客戶端定時向服務器發送Ajax請求,服務器接到請求后馬上返回響應信息,並關閉連接。

優點:后端程序編寫比較容易 
缺點:請求中大半是無用的,浪費帶寬和服務器資源 
實例:適用於小型應用

2.長輪詢:

客戶端向服務器發送Ajax請求,服務器接到請求后Hold住連接,直到有新消息才返回響應信息,並關閉連接;客戶端處理完響應信息后再向服務器發送新的請求。

優點:在無消息的情況下不會頻繁的請求,耗費的資源少 
缺點:服務器Hold住連接會消耗資源,返回數據順序無法保證,難於管理和維護 
實例:WebQQ、Hi網頁版、FaceBook IM等

3.長連接:

在頁面中嵌入一個隱藏的jframe,將這個隱藏的iframe的src屬性設置為對一個長連接的請求或者采用XRH請求,服務器端就能源源不斷地往客戶端輸入數據。

優點:消息即時到達,不發無用的請求;管理起來也相對方便 
缺點:服務器維護一個長連接會增加開銷 
實例:Gmail聊天

4.Flash Socket:

在頁面中嵌入一個使用了Socket類的Flash程序,JavaScript通過調用此Flash程序提供的Socket接口與服務器端的Socket接口進行通信,JavaScript在收到服務器端傳送的信息后控制頁面的顯示。

優點:實現真正的即時通信,而不是偽即時 
缺點:客戶端必須安裝Flash插件;非HTTP協議,無法自動穿越防火牆 
實例:網絡互動游戲

5.WebSocket:

WebSocket是HTML5開始提供的一種瀏覽器與服務器間進行全雙工通訊的網絡技術;依靠這種技術可以實現客戶端和服務器端的長連接,雙向實時通訊。

優點:事件驅動;異步;使用WS或者WSS協議的客戶端Socket;能夠實現真正意義上的推送功能 
缺點:少部分瀏覽器不支持,不同瀏覽器支持的程度和方式都不同

 

參考:

  https://blog.csdn.net/wangchengiii/article/details/77895280

  https://88250.b3log.org/web-message-push

  Android 幾種消息推送方案總結:https://www.cnblogs.com/Joanna-Yan/p/6241354.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM