一種實時網站推送消息的方法
2023-10-06 16:53:29 2
一種實時網站推送消息的方法
【專利摘要】本發明涉及軟體開發【技術領域】,具體涉及一種實時網站推送消息的方法。本發明通過web客戶端發送請求到服務端,伺服器端阻塞請求直到有數據傳遞或超時才返回;之後客戶端JavaScript響應處理函數在處理完伺服器返回的信息後,再次發出請求,重新建立連接;當客戶端處理接收的數據、重新建立連接時,伺服器端可能有新的數據到達;這些信息會被伺服器端保存直到web客戶端重新建立連接;客戶端一次將當前伺服器端所有的信息取回;從而網站用戶可以實時接收到服務端發送的消息,避免消息接收滯後。本發明伺服器與客戶端的實時通信。
【專利說明】 一種實時網站推送消息的方法
【技術領域】
[0001]本發明涉及軟體開發【技術領域】,具體涉及一種實時網站推送消息的方法。
【背景技術】
[0002]現在是信息化時代,信息化使人類以更快更便捷的方式獲得並傳遞人類創造的一切文明成果。信息的滯後,會帶來一些不必要的麻煩,甚至是重大的經濟損失。信息的及時性就顯得尤為重要,在第一時間對獲取的信息作出響應。.
【發明內容】
[0003]本發明解決的技術問題在於提供一種實時網站推送消息的方法,為用戶提供一種及時、聞效的獲取?目息的方法。
[0004]本發明解決上述技術問題的技術方案是:
[0005]通過web客戶端發送請求到服務端,伺服器端阻塞請求直到有數據傳遞或超時才返回;之後客戶端JavaScript響應處理函數在處理完伺服器返回的信息後,再次發出請求,重新建立連接;當客戶端處理接收的數據、重新建立連接時,伺服器端可能有新的數據到達;這些信息會被伺服器端保存直到web客戶端重新建立連接;客戶端一次將當前伺服器端所有的信息取回;從而網站用戶可以實時接收到服務端發送的消息,避免消息接收滯後。
[0006]所述的方法包括如下步驟:
[0007]第I步、首先客戶端和服務端交互採用的Bayeux協議;
[0008]第2步、客戶端向服務端(/meta/handshake頻道上)發起握手請求;
[0009]第3步、服務端收到握手請求,BayeuxServer創造了一個半伺服器對象的實例;月艮務端處理完握手請求後,發送響應給客戶端;
[0010]第4步、客戶端收到服務端處理握手請求的響應,如果成功,則:
[0011]a.向服務端發起訂閱服務的請求;
[0012]b.開始與服務端的心跳機制,來交換連接的信息;
[0013]第5步、服務端再啟動時初始化兩個服務頻道
[0014]a./service/privatechat 自定義頻道
[0015]b./service/joinlisten 自定義頻道
[0016]第6步、客戶端向服務端發起訂閱/service/privatechat服務,此服務用來實現用戶之間的聊天;
[0017]第7步、開始心跳機制;
[0018]第8步、心跳機制,建立HTTP長輪詢;
[0019]第9步、心跳機制,允許客戶端檢測伺服器是否關閉了,並允許服務端檢測客戶端是否關閉了;
[0020]第10步、客戶端和伺服器之間的連接的消息一直都有,直至任何一方決定中斷並發送一個disconnect的消息;
[0021]第11步、客戶端可以向服務端/service/joinlisten頻道發送請求;
[0022]第12步、所有初始化工作都已準備完畢,客戶端之間就可以任意發送信息。
[0023]本發明的有益效果是:通過實時網站推送消息的方法,讓用戶能及時的獲取有用的信息,監控web應用的訪問情況,實現及時發現問題、及時處理問題,大大減少客戶無法訪問應用的時間,把損失降到最低。
【專利附圖】
【附圖說明】
[0024]下面結合附圖對本發明進一步說明:
[0025]圖1為本發明的業務流程圖。
【具體實施方式】
[0026]見附圖所示,本發明通過web客戶端發送請求到服務端,伺服器端會阻塞請求直到有數據傳遞或超時才返回,之後客戶端JavaScript響應處理函數會在處理完伺服器返回的信息後,再次發出請求,重新建立連接。當客戶端處理接收的數據、重新建立連接時,月艮務器端可能有新的數據到達;這些信息會被伺服器端保存直到web客戶端重新建立連接,客戶端會一次把當前伺服器端所有的信息取回,讓網站用戶可以實時接收到服務端發送的消息,避免消息接收滯後,造成的損失!
[0027]下面我們以某個推送消息的應用為例,講述該方法的實施:
[0028]第I步、首先客戶端和服務端交互採用的Bayeux協議;
[0029]第2步、客戶端向服務端(/meta/handshake頻道上)發起握手請求。Bayeux協議要求,一個新的客戶端發送的第一條消息是一個握手信息;
[0030]第3步、服務端收到握手請求,BayeuxServer創造了一個半伺服器對象的實例(一個ServerSess1n)。服務端處理完握手請求後,發送響應給客戶端;
[0031]第4步、客戶端收到服務端處理握手請求的響應,如果它是成功,接下來要做兩件事情:
[0032]a.向服務端發起訂閱服務的請求。
[0033]b.開始與服務端的心跳機制,來交換連接的信息;
[0034]第5步、服務端再啟動時初始化了兩個服務頻道
[0035]a./service/privatechat 自定義頻道
[0036]b./service/joinlisten 自定義頻道
[0037]第6步、客戶端向服務端發起訂閱/service/privatechat服務,此服務用來實現用戶之間的聊天
[0038]第7步、開始心跳機制
[0039]第8步、心跳機制,建立HTTP長輪詢。
[0040]第9步、心跳機制,允許客戶端檢測伺服器是否關閉了,並允許服務端檢測客戶端是否關閉了。
[0041]第10步、客戶端和伺服器之間的連接的消息一直都有,直至任何一方決定中斷並發送一個disconnect的消息(發送/meta/disconnect斷開通道消息)
[0042]第11步、客戶端可以向服務端/service/joinlisten頻道發送請求
[0043]第12步、所有初始化工作都已準備完畢,客戶端之間就可以任意發送信息。
【權利要求】
1.一種實時網站推送消息的方法,其特徵在於:通過web客戶端發送請求到服務端,月艮務器端阻塞請求直到有數據傳遞或超時才返回;之後客戶端JavaScript響應處理函數在處理完伺服器返回的信息後,再次發出請求,重新建立連接;當客戶端處理接收的數據、重新建立連接時,伺服器端可能有新的數據到達;這些信息會被伺服器端保存直到web客戶端重新建立連接;客戶端一次將當前伺服器端所有的信息取回;從而網站用戶可以實時接收到服務端發送的消息,避免消息接收滯後。
2.根據權利要求1所述的實時網站推送消息的方法,其特徵在於:所述的方法包括如下步驟: 第I步、首先客戶端和服務端交互採用的Bayeux協議; 第2步、客戶端向服務端(/meta/handshake頻道上)發起握手請求; 第3步、服務端收到握手請求,BayeuxServer創造了一個半伺服器對象的實例;服務端處理完握手請求後,發送響應給客戶端; 第4步、客戶端收到服務端處理握手請求的響應,如果成功,則: a.向服務端發起訂閱服務的請求; b.開始與服務端的心跳機制,來交換連接的信息; 第5步、服務端再啟動時初始化兩個服務頻道 a./service/privatechat 自定義步頁道 b./service/joinlisten 自定義步頁道 第6步、客戶端向服務端發起訂閱/service/privatechat服務,此服務用來實現用戶之間的聊天; 第7步、開始心跳機制; 第8步、心跳機制,建立HTTP長輪詢; 第9步、心跳機制,允許客戶端檢測伺服器是否關閉了,並允許服務端檢測客戶端是否關閉了 ; 第10步、客戶端和伺服器之間的連接的消息一直都有,直至任何一方決定中斷並發送一個disconnect的消息; 第11步、客戶端可以向服務端/service/joinlisten頻道發送請求; 第12步、所有初始化工作都已準備完畢,客戶端之間就可以任意發送信息。
【文檔編號】H04L29/08GK104394212SQ201410683166
【公開日】2015年3月4日 申請日期:2014年11月23日 優先權日:2014年11月23日
【發明者】龐毅, 關班記, 季統凱 申請人:國雲科技股份有限公司