當前位置:首頁 » 網頁前端 » 前端實現實時消息推送
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

前端實現實時消息推送

發布時間: 2022-12-25 08:50:39

『壹』 移動端消息推送前端怎麼實現

移動端消息推送前端有兩種方式:
1、輪詢方式(PULL)
就是主動去拉取消息,客戶端和伺服器定期的建立連接,通過消息隊列等方式來獲取是否有新的消息。費流量、耗電量有著很明顯的劣勢,而且APP關閉後就沒有辦法獲取消息了,對用戶體驗有較大傷害。
2、長連接方式(PUSH)
這一種就是我們經常說的推送,它是基於TCP長連接實現,客戶端和伺服器建立TCP長連接之後,客戶端定期向伺服器發送心跳包用於保持連接,有消息的時候,伺服器直接通過這個已經建立好的TCP連接通知客戶端。隨著客戶端數量和消息並發量的上升,對於消息伺服器的性能和穩定性要求提出了非常大的考驗。
因此,就難度而言,此方式代價也最高。因此國內涌現出了大量的第三方推送服務提供商。目前應用最為廣泛的第三方推送服務提供商包括極光等第三方服務,絕大部分APP都會優先考慮採用第三方推送服務。
因此,實現移動端消息推送可以使用極光,極光是中國領先的開發者服務提供商,專注於為開發者提供穩定高效的消息推送、一鍵認證以及流量變現等服務,助力開發者的運營、增長與變現。同時,極光的行業應用已經拓展至市場洞察、金融風控與商業地理服務,助力各行各業優化決策、提升效率。

『貳』 WebSocket Session共享

最近在做消息中心模塊,想要實現消息實時推送到前端頁面展示,直接摒棄了前端定時輪訓調用介面來獲取消息數據的方式,採用了WebSocket服務端推送。

流程是首先前端跟後端應用新建一個連接,並攜帶當前登錄的用戶ID,此時WebSocket會創建一個WebsocketSession來唯一綁定該連接,我們會在後端用Map建立用戶ID與Session的映射關系:

後續有新消息到達時,就可以通過該Map映射找到指定用戶ID對應的session來推送消息。但有一個問題,後端是多應用節點,每個節點維護一個這樣的Map, 無法共享WebsocketSession ,而且 redis也無法對WebsocketSession序列化後進行存儲

由於項目目前用到了Redis,所以可以 採用Redis的發布/訂閱功能來實現WebsocketSession共享問題。

1.新建一個對象,屬性有userId, message,用於發送消息

2. 當新消息到達時,將消息注冊到redis指定topic的頻道上

3.每個應用節點都訂閱該topic的頻道,這樣新消息一注冊,每個節點都能接收到Object,然後從Object中獲取userId,再從映射Map中獲取userId對應的WebsocketSession(在哪個節點建立的連接和Map映射關系,就會在哪個節點找到對應的session),進行消息推送。

就這樣通過Redis的發布/訂閱功能實現session共享。當然在步驟2,新消息到達時,可以先在本節點的Map映射中查找是否有userId對應的session,如果有,直接推送消息,而且不必要再將消息注冊到redis中。

『叄』 前端技術 問怎麼做到不刷新,實時獲取這個消息

一般有三種方式:

  1. 輪詢,也就是頁面定時向伺服器拉取消息,有未讀消息則更新

  2. 長連接,頁面和伺服器建立一個持序的TCP連接,當沒有新消息時,伺服器阻塞此連接;當新消息到來時,伺服器將響應返回到頁面並關閉此連接。前端將返回的響應更新到頁面上,並馬上向伺服器再發起一個新的長連接

  3. websocket,前端和伺服器建立一個websocket連接,由伺服器主動向前端推送消息,前端每次收到來自伺服器的消息時將內容更新到頁面上。

『肆』 html5消息推送功能怎麼做

前台可以設置一個setinterval,定期發送ajax監聽後台,也可以用HTML5的websocket,html5的方式比較新,消息比較短,適合做聊天系統。
在WebSocket API中,瀏覽器和伺服器只需要要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。
webSocket是html5新引入的技術,允許後台隨時向前端發送文本或者二進制消息,WebSocket是一種全新的協議,不屬於http無狀態協議,協議名為「ws」,這意味著一個websocket連接地址會是這樣的寫法
WebSocket是為解決客戶端與服務端實時通信而產生的技術。其本質是先通過HTTP/HTTPS協議進行握手後創建一個用於交換數據的TCP連接,此後服務端與客戶端通過此TCP連接進行實時通信。
消息推送選擇極光。JPush 是經過考驗的大規模 App 推送平台,每天推送消息量級為數百億條。 開發者集成 SDK 後,可以通過調用 API 推送消息。同時,JPush 提供可視化的 web 端控制台發送通知,統計分析推送效果。 JPush 全面支持 Android, iOS, Winphone 三大手機平台。

『伍』 前端 消息推送是怎麼實現的

主要介紹其中的五種實現方式:短輪詢、Comet、Flash XMLSocket、Server-sent、WebSocket
1、短輪詢
指在特定的的時間間隔(如每10秒),由瀏覽器對伺服器發出HTTP request,然後由伺服器返回最新的數據給客戶端的瀏覽器。瀏覽器做處理後進行顯示。無論後端此時是否有新的消息產生,都會進行響應
2、Comet
包括了長輪詢和長連接,長輪詢是客戶端向伺服器發送Ajax請求,伺服器接到請求後hold住連接,直到有新消息才返回響應信息並關閉連接,客戶端處理完響應信息後再向伺服器發送新的請求;長連接是在頁面中的iframe發送請求到服務端,服務端hold住請求並不斷將需要返回前端的數據封裝成調用javascript函數的形式響應到前端,前端不斷收到響應並處理
3、Flash XMLSocket
在 HTML 頁面中內嵌入一個使用了 XMLSocket 類的 Flash 程序。JavaScript 通過調用此 Flash 程序提供的socket介面與伺服器端的socket進行通信。JavaScript 在收到伺服器端以 XML 格式傳送的信息後可以很容易地控制 HTML 頁面的內容顯示
4、Server-sent
伺服器推指的是HTML5規范中提供的服務端事件EventSource,瀏覽器在實現了該規范的前提下創建一個EventSource連接後,便可收到服務端的發送的消息,實現一個單向通信。客戶端進行監聽,並對響應的信息處理顯示
5、WebSocket
WebSocket是HTML5下一種新的協議,是基於TCP的應用層協議,只需要一次連接,便可以實現全雙工通信,客戶端和服務端可以相互主動發送消息。客戶端進行監聽,並對響應的消息處理顯示
針對自己系統的應用場景選擇合適的推送方案才是合理的,因此最後簡單說一下實現個性化推送的兩種方式。第一種很簡單,直接使用第三方實現的推送,無需復雜的開發運維,直接可以使用。第二種就是自己封裝,可以選擇如今較為火熱的WebSocket來實現系統的推送。
關於第三方推送平台,極光推送,操作簡單,穩定性高,送達率快

『陸』 前端消息推送怎麼實現

前端消息推送主要有兩種方式:

1、輪詢方式(PULL):主動去拉取消息,客戶端和伺服器定期的建立連接,通過消息隊列等方式來獲取是否有新的消息。

2、長連接方式(PUSH):它是基於TCP長連接實現,客戶端和伺服器建立TCP長連接之後,客戶端定期向伺服器發送心跳包用於保持連接,有消息的時候,伺服器直接通過這個已經建立好的TCP連接通知客戶端。

目前應用最為廣泛的第三方推送服務提供商包括極光等第三方服務,絕大部分APP都會優先考慮採用第三方推送服務。

實現前端端消息推送可以選擇極光,極光是中國領先的開發者服務提供商,專注於為開發者提供穩定高效的消息推送、一鍵認證以及流量變現等服務,助力開發者的運營、增長與變現。同時,極光的行業應用已經拓展至市場洞察、金融風控與商業地理服務,助力各行各業優化決策、提升效率。

『柒』 Java Web 伺服器的消息推送 幾種方案

Java Web 伺服器的消息推送有以下幾種方案:
1. 輪詢:前端使用ajax不停的發起請求獲取想要的數據(最簡單也是最容易耗盡伺服器資源)。
2. 長連接:HTTP長連接,客戶端向服務端發起請求,服務端等有數據了才response,否則一直持有該連接Cometgithub: comet4j 項目,可以直接下載配置jar到tomcat下使用。
3、使用xmpp協議的一種技術,能夠做到js中調用伺服器的Java方法。
消息推送建議用專業的推送平台,例如:極光。深圳市和訊華谷信息技術有限公司創立於2011年,其團隊核心成員來自騰訊、摩根士丹利、豆瓣、Teradata和中國移動等公司。公司總部位於深圳,在北京、上海、廣州、成都均設有辦公室。