新四季網

消息推送方法及裝置與流程

2023-04-25 23:48:56


本發明涉及通信技術領域,特別涉及一種消息推送方法及裝置。



背景技術:

消息推送技術隨著移動網際網路的迅速發展應運而生。消息推送技術是指,針對用戶對信息的特定需求,有目的性的將信息主動推送到用戶。通常採用伺服器-客戶機制,由伺服器主動將信息推送給客戶端。因此,推送技術實際上就是把信息自動送到用戶面前的技術,即實現「信息找用戶」。

現有技術中,要實現某一時刻給所有在線用戶推送彼此不同的實時消息,可以用單進程對所有用戶進行遍歷,通過實時計算得到針對每個用戶需要發送的消息並發送,也可以事先計算好要發送給用戶的消息並存儲在資料庫(database)中,發送時針對每個用戶從資料庫中讀取要發送的消息進行發送。

現有的方案在性能上可以進一步提高,實時計算需要發送的消息內容,雖然可以免去存儲所有用戶待發送的消息內容的存儲消耗,但需要耗費一定的時間,影響用戶接收到消息的時效性。事先計算每個用戶待發送的消息內容並存儲於資料庫中可以避免實時計算消息內容的時間消耗,但同時增加了從資料庫讀取消息內容的時間,對於用戶接收消息時效性的影響取決於實時計算消息內容的時長和從資料庫讀取消息內容的時長。通過單進程遍歷所有用戶時,當用戶數量很大時,遍歷耗時將逐漸增大,後推送的消息達到用戶的時效性越差。而終端用戶對推送消息的準確性和及時性有著強烈的要求,但是現有技術中並不能實現對消息正常、及時地推送。



技術實現要素:

本發明提供了一種消息推送方法及裝置,基於共享內存及多進程技術,通過多進程同時從共享內存讀取消息並推送給客戶端,解決了消息推送不及時的問題,實現了高效、實時的消息推送。本發明為了提高從共享內存讀取消息的速度,在往共享內存中存儲消息時,已經將消息進行了分類,每個進程的每個客戶端可從確定的共享內存塊查詢待發送的消息,這樣可以縮小查找範圍,避免每個客戶端從所有的消息裡查找所需要的消息。

本發明的第一方面提供一種消息推送方法,包括:

獲取推送消息和客戶端id;

確定客戶端id所屬進程,並將推送消息和客戶端id存入與該進程對應的共享內存塊中;

當到達消息推送時間時,各進程同時從對應的共享內存塊中讀取推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端。

本發明的第二方面提供一種消息推送裝置,包括:

數據獲取單元,用於獲取推送消息和客戶端id;

數據處理單元,用於確定客戶端id所屬進程,並將推送消息和客戶端id存入與該進程對應的共享內存塊中;

消息推送單元,用於在到達消息推送時間時,各進程同時從對應的共享內存塊中讀取推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端。

本發明事先將針對客戶端的待發送消息存儲於共享內存中,推送消息時,多個進程同時從共享內存讀取消息並將讀取的消息發送至對應的客戶端;共享內存的讀取速度比資料庫讀取速度快,加之多個進程同時讀取和發送消息,因而可以提升消息推送的效率。此外,在存儲消息時,將連接同一進程的所有客戶端的待發送消息存入該進程對應的共享內存塊中,可以避免每個進程從所有的消息裡遍歷查找所需要的消息,縮小了消息查找範圍,可以節省消息查找時間,實現高效的實時消息推送。

附圖說明

為了更清楚地說明本發明實施例或現有技術中的技術方案和優點,下面將對實施例或現有技術描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它附圖。

圖1是本發明實施例提供的消息推送方法及裝置的示例性系統架構圖;

圖2是本發明實施例提供的消息推送方法及裝置的框架結構圖;

圖3是本發明實施例提供的消息推送方法的流程圖;

圖4是本發明實施例提供的消息推送方法的流程圖;

圖5是本發明實施例提供的一種消息推送的方法的流程圖;

圖6是本發明實施例提供的另一種消息推送的方法的流程圖;

圖7是本發明實施例提供的消息推送裝置的結構框圖;

圖8是本發明實施例提供的用來實現本發明實施例的伺服器的結構示意圖。

具體實施方式

為了使本技術領域的人員更好地理解本發明方案,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分的實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本發明保護的範圍。

需要說明的是,本發明的說明書和權利要求書及上述附圖中的術語「第一」、「第二」等是用於區別類似的對象,而不必用於描述特定的順序或先後次序。應該理解這樣使用的數據在適當情況下可以互換,以便這裡描述的本發明的實施例能夠以除了在這裡圖示或描述的那些以外的順序實施。此外,術語「包括」和「具有」以及他們的任何變形,意圖在於覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統、產品或設備不必限於清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或對於這些過程、方法、產品或設備固有的其它步驟或單元。

圖1是本發明實施例提供的消息推送方法及裝置的示例性系統架構圖。該該系統架構可以包括終端設備200、網絡300和伺服器100。網絡300為用以在終端設備200和伺服器100之間提供通信鏈路的介質。網絡300可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。用戶可以使用終端設備200通過網絡300與伺服器100交互,以接收或發送消息等。終端設備200上可以安裝有各種客戶端應用,例如,遊戲類應用、網頁瀏覽器應用、購物類應用、搜索類應用、即時通信工具、郵箱客戶端、社交平臺軟體等。

終端設備200可以是具有顯示屏的各種電子設備,包括但不限於智慧型手機、平板電腦、便攜計算機和臺式計算機等等。伺服器100可以是提供各種服務的伺服器,例如,對終端設備200上安裝的應用提供雲端數據支持和雲端處理的伺服器。雲端伺服器可以對對應終端的推送消息進行處理,並將推送消息反饋給終端設備。

需要說明的是,本申請實施例所提供的消息推送方法可以由伺服器100和終端設備200結合來執行。

應該理解,圖1中的終端設備、網絡和伺服器的數目僅僅是示意性的。根據實現需要,可以具有任意數目的終端設備、網絡和伺服器。

圖2是本發明實施例提供的消息推送方法及裝置的框架結構圖,適用於要實現某一時刻給所有在線用戶推送彼此不同的實時消息的應用場景。圖中,110是共享內存,120是推送消息的多進程,130是用戶客戶端,每個進程上連接有多個用戶客戶端,共享內存被劃分為多個共享內存塊,每個進程配置一個共享內存塊,進程上所有用戶客戶端的消息都存儲於該進程對應的共享內存塊中,這樣,當需要向客戶端推送消息時,各個進程在同一時間分別從各自對應的共享內存塊中獲取消息,然後發送給進程上的客戶端,以此來節省消息推送時間,提高消息推送效率。

實施例1

請參見圖3-5,本實施例提供一種消息推送方法。該方法包括:

s301:獲取推送消息和客戶端id。

應用使用過程中,會涉及大量與伺服器交互的消息,這些消息可以是客戶端通過伺服器發送給其他客戶端的,例如遊戲應用內各客戶端之間的即時通訊,也可以是伺服器根據客戶端應用使用狀況產生的,例如遊戲應用內的名次排名。本實施例以推送伺服器所產生的推送消息進行說明,為了將這些推送消息準確的推送到對應的客戶端,在獲取推送消息的同時需要獲得該推送消息對應的客戶端id,對於伺服器根據客戶端應用產生的推送消息而言,需要獲得推送消息以及接收該推送消息的客戶端id,客戶端id是唯一標識客戶端的標識符號,可以是用戶名。

s302:確定客戶端id所屬進程,並將推送消息和客戶端id存入與該進程對應的共享內存塊中。

每個進程連接有多個客戶端,系統約定為每個進程分配進程id,用以唯一標識該進程,以及為每個共享內存塊分配共享內存塊id,用以唯一標識該共享內存塊,在此基礎上,進一步建立有進程id與客戶端id的映射關係以及進程id與共享內存塊id的映射關係;通過查詢進程id與客戶端id的映射關係,可以查找客戶端id對應的進程id,獲知客戶端id所屬進程,進而根據進程id與共享內存塊id的映射關係,可以查找得到進程id對應的共享內存塊id,獲知進程id對應的共享內存塊,進而可以將推送消息和客戶端id存入與該客戶端id所屬進程相對應的共享內存塊中。

s303:當到達消息推送時間時,各進程同時從對應的共享內存塊中讀取推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端。

當到達消息推送時間時,伺服器可以生成消息推送指令,觸發各進程同時從各自對應的共享內存塊中讀取推送消息,並根據推送消息與客戶端id的對應關係,將推送消息發送至與客戶端id對應的客戶端中。各進程推送消息的過程是相互獨立且同時進行的,下面以單個進程推送消息為例對推送消息的過程進行具體說明。

共享內存塊中對應存儲了推送消息和客戶端id,推送消息時,可以以推送消息為主導進行推送,也可以以客戶端id為主導進行消息推送。本實施例以推送消息為主導執行消息推送,包括:逐條讀取共享內存塊中的推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端,直至將共享內存塊中所有的推送消息都推送給相應的客戶端。具體請參見圖5,單個進程推送消息的過程包括如下步驟:

s501:讀取共享內存塊中的推送消息。

讀取共享內存塊中的推送消息時,可以按照消息在共享內存塊中的存儲位置進行順序讀取,從共享內存塊中位置的第一條推送消息開始讀取,直至讀取到最後一條推送消息。

s502:根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端。

每讀取一條推送消息後,根據該推送消息與客戶端id的對應關係找到接收該推送消息的客戶端的客戶端id,根據客戶端id將推送消息發送給相應的客戶端。

s503:判斷處理的推送消息是否為最後一條推送消息,若是,說明共享內存塊中的所有推送消息都分發完成,可以結束流程,若否,說明共享內存塊中存在未發送的推送消息,則重複s501-s503,繼續讀取並發送下一條推送消息,直至將共享內存塊中存儲的所有推送消息都分發一遍。

優選地,在步驟s301之前,還包括:

s401:建立多個進程,每個進程連接多個客戶端。

s402:獲取連接在各進程上的客戶端的客戶端id,建立客戶端id與該客戶端id所屬進程的進程id之間的映射關係。

s403:為每個進程分配一共享內存塊。

s404:建立進程的進程id與該進程對應的共享內存塊的共享內存塊id之間的映射關係。

本實施例事先將針對客戶端的待發送消息存儲於共享內存中,推送消息時,多個進程同時從共享內存讀取消息並將讀取的消息發送至對應的客戶端;共享內存的讀取速度比資料庫讀取速度快,加之多個進程同時讀取和發送消息,因而可以提升消息推送的效率。此外,在存儲消息時,將連接同一進程的所有客戶端的待發送消息存入該進程對應的共享內存塊中,可以避免每個進程從所有的消息裡遍歷查找所需要的消息,縮小了消息查找範圍,可以節省消息查找時間,實現高效的實時消息推送。

實施例2

本實施例提供一種消息推送方法,適用於伺服器向各客戶端推送內容不同的實時消息。該方法包括預處理流程和消息推送流程,其中預處理流程包括如下步驟:

s401、建立多個進程,每個進程連接多個客戶端。

系統為多進程中的每個進程分配了進程id,用以唯一標識該進程。每個客戶端也具有客戶端id,客戶端id是唯一標識客戶端的標識符號,可以是用戶名。

s402、獲取連接在各進程上的客戶端的客戶端id,建立客戶端id與該客戶端id所屬進程的進程id之間的映射關係。

s403、為每個進程分配一共享內存塊。

共享內存被劃分為多個共享內存塊,系統為每個共享內存塊分配共享內存塊id,用以唯一標識該共享內存塊。每個進程對應一個共享內存塊,該共享內存塊可以存儲該進程上連接的所有客戶端的推送消息。

s404、建立進程的進程id與該進程對應的共享內存塊的共享內存塊id之間的映射關係。

進一步地,消息推送流程包括如下步驟:

s301:獲取推送消息和客戶端id。

應用使用過程中,會涉及大量與伺服器交互的消息,這些消息可以是客戶端通過伺服器發送給其他客戶端的,例如遊戲應用內各客戶端之間的即時通訊,也可以是伺服器根據客戶端應用使用狀況產生的,例如遊戲應用內的名次排名。本實施例以推送伺服器所產生的推送消息進行說明,為了將這些推送消息準確的推送到對應的客戶端,在獲取推送消息的同時需要獲得該推送消息對應的客戶端id,對於伺服器根據客戶端應用產生的推送消息而言,需要獲得推送消息以及接收該推送消息的客戶端id。

s302:確定客戶端id所屬進程,並將推送消息和客戶端id存入與該進程對應的共享內存塊中。

根據進程id與客戶端id的映射關係,可以查找客戶端id對應的進程id,獲知客戶端id所屬進程,進而根據進程id與共享內存塊id的映射關係,可以查找得到進程id對應的共享內存塊id,獲知進程id對應的共享內存塊,進而可以將推送消息和客戶端id存入與該客戶端id所屬進程相對應的共享內存塊中。

s303:當到達消息推送時間時,各進程同時從對應的共享內存塊中讀取推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端。

當到達消息推送時間時,伺服器可以生成消息推送指令,觸發各進程同時從各自對應的共享內存塊中讀取推送消息,並根據推送消息與客戶端id的對應關係,將推送消息發送至與客戶端id對應的客戶端中。各進程推送消息的過程是相互獨立且同時進行的,下面以單個進程推送消息為例對推送消息的過程進行具體說明。

共享內存塊中對應存儲了推送消息和客戶端id,推送消息時,可以以推送消息為主導進行推送,也可以以客戶端id為主導進行消息推送。本實施例以以客戶端id為主導進行消息推送,包括如下步驟:

s601、獲取連接在進程上的客戶端的客戶端id。

根據連接在進程上的客戶端的客戶端id列表,從客戶端id列表中的第一個客戶端id開始逐一向後獲取客戶端id。

s602、從進程對應的共享內存塊中讀取與所述客戶端id對應的推送消息。

根據獲取的客戶端id,從與客戶端id所屬進程對應的共享內存塊中查找與客戶端id對應的推送消息,如果查找到客戶端id對應的推送消息,則執行s603,如果沒有查找到客戶端id對應的推送消息,則執行s605。

s603、將所述推送消息發送至與所述客戶端id對應的客戶端。

s604、判斷所述客戶端id是否為客戶端id列表中的最後一個客戶端id,若否,則執行s605,若是,則結束流程。

s605、獲取下一個客戶端的客戶端id,並重複執行s602-s604,直至所有的客戶端id的推送消息都發送出去。

本實施例在存儲消息時,根據客戶端id與進程id的對應關係,找到客戶端id所屬進程,並根據進程id與共享內存id的對應關係,找到進程對應的共享內存塊,進而將連接同一進程的所有客戶端的待發送消息存入該進程對應的共享內存塊中,可以避免每個進程從所有的消息裡遍歷查找所需要的消息,縮小了消息查找範圍,可以節省消息查找時間,實現高效的實時消息推送。

在推送消息時,多個進程同時從共享內存讀取消息並將讀取的消息發送至對應的客戶端;共享內存的讀取速度比資料庫讀取速度快,加之多個進程同時讀取和發送消息,因而可以提升消息推送的效率。

需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明並不受所描述的動作順序的限制,因為依據本發明,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於優選實施例,所涉及的動作和模塊並不一定是本發明所必須的。

通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到根據上述實施例的方法可藉助軟體加必需的通用硬體平臺的方式來實現,當然也可以通過硬體,但很多情況下前者是更佳的實施方式。基於這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該計算機軟體產品存儲在一個存儲介質(如rom/ram、磁碟、光碟)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,伺服器,或者網絡設備等)執行本發明各個實施例所述的方法。

實施例3

請參考圖7,為實現上述實施例1和實施例2所示的方法,本發明提供了一種消息推送裝置的實施例,該裝置與圖3和圖4所示的方法實施例相對應。

如圖7所示,本實施例的消息推送裝置70包括數據獲取單元75、數據處理單元76和消息推送單元77。

數據獲取單元75,用於獲取推送消息和客戶端id;

數據處理單元76,用於確定客戶端id所屬進程,並將推送消息和客戶端id存入與該進程對應的共享內存塊中;

消息推送單元77,用於使各進程同時從對應的共享內存塊中讀取推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端。

進一步地,所述消息推送裝置70還包括進程創建單元71、第一映射關係建立單元72、分配單元73和第二映射關係建立單元74。其中,

進程創建單元71,用於建立多個進程,每個進程連接多個客戶端;

第一映射關係建立單元72,用於獲取連接在各進程上的客戶端的客戶端id,建立客戶端id與該客戶端id所屬進程的進程id之間的映射關係;

分配單元73,用於為每個進程分配一共享內存塊;

第二映射關係建立單元74,用於建立進程的進程id與該進程對應的共享內存塊的共享內存塊id之間的映射關係。

作為一種優選方式,所述數據處理單元76包括第一查找模塊761、第二查找模塊762和數據處理模塊763:

第一查找模塊761,用於根據客戶端id與進程id的映射關係,查找所述客戶端id對應的進程id;

第二查找模塊762,用於根據進程id與共享內存塊id的映射關係,查找所述進程id對應的共享內存塊id;

數據處理模塊763,用於將所述推送消息和客戶端id存入與該共享內存塊id對應的共享內存塊中。

作為一種優選方式,所述消息推送單元77包括第一消息推送模塊771和第二消息推送模塊772。

第一消息推送模塊771,用於逐條讀取共享內存塊中的推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端,直至將共享內存塊中所有的推送消息都推送給相應的客戶端。

第二消息推送模塊772,用於獲取連接在進程上的客戶端的客戶端id;從進程對應的共享內存塊中讀取與所述客戶端id對應的推送消息,將所述推送消息發送至與所述客戶端id對應的客戶端;判斷所述客戶端id是否為最後一個客戶端id,若是,結束推送消息的推送,若否,對下一個客戶端進行推送消息的推送。

進一步地,所述第二消息推送模塊772還用於:如果從進程對應的共享內存塊中沒有讀取到與所述客戶端id對應的推送消息,判斷所述客戶端id是否為最後一個客戶端id,若是,結束推送消息的推送,若否,對下一個客戶端進行推送消息的推送。

本實施例中,事先將針對客戶端的待發送消息存儲於共享內存中,推送消息時,多個進程同時從共享內存讀取消息並將讀取的消息發送至對應的客戶端;共享內存的讀取速度比資料庫讀取速度快,加之多個進程同時讀取和發送消息,因而可以提升消息推送的效率。此外,在存儲消息時,將連接同一進程的所有客戶端的待發送消息存入該進程對應的共享內存塊中,可以避免每個進程從所有的消息裡遍歷查找所需要的消息,縮小了消息查找範圍,可以節省消息查找時間,實現高效的實時消息推送。解決了當客戶端數量較多情況下,儘快地給每個客戶端推送彼此不同的實時消息的問題。

實施例4

下面參考圖8,其示出了適用於來實現本發明實施例的終端設備或伺服器的計算機系統的結構示意圖。

如圖8所示,計算機系統900包括中央處理單元(cpu)901,其可以根據存儲在只讀存儲器(rom)902中的程序或者從存儲部分908加載到隨機訪問存儲器(ram)903中的程序而執行各種適當的動作和處理。在ram903中,還存儲有系統900操作所需的各種程序和數據。cpu901、rom902以及ram903通過總線904彼此相連。輸入/輸出(i/o)接口905也連接至總線904。

以下部件連接至i/o接口905:包括鍵盤、滑鼠等的輸入部分906;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚聲器等的輸出部分907;包括硬碟等的存儲部分908;以及包括諸如lan卡、數據機等的網絡接口卡的通信部分909。通信部分909經由諸如網際網路的網絡執行通信處理。驅動器910也根據需要連接至i/o接口905。可拆卸介質911,諸如磁碟、光碟、磁光碟、半導體存儲器等等,根據需要安裝在驅動器910上,以便於從其上讀出的電腦程式根據需要被安裝入存儲部分908。

特別地,根據本公開的實施例,上文參考流程圖描述的過程可以被實現為計算機軟體程序。例如,本公開的實施例包括一種電腦程式產品,其包括有形地包含在機器可讀介質上的電腦程式,所述電腦程式包含用於執行流程圖所示的方法的程序代碼。在這樣的實施例中,該電腦程式可以通過通信部分909從網絡上被下載和安裝,和/或從可拆卸介質911被安裝。

附圖中的流程圖和框圖,圖示了按照本申請各種實施例的系統、方法和電腦程式產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,所述模塊、程序段、或代碼的一部分包含一個或多個用於實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標註的功能也可以以不同於附圖中所標註的順序發生。例如,兩個接連地表示的方框實際上可以基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或操作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的組合來實現。

描述於本申請實施例中所涉及到的單元可以通過軟體的方式實現,也可以通過硬體的方式來實現。所描述的單元也可以設置在處理器中,例如,可以描述為:一種處理器包括接收模塊、檢測模塊和處理模塊。其中,這些模塊的名稱在某種情況下並不構成對該模塊本身的限定。

作為另一方面,本申請還提供了一種非易失性計算機存儲介質,該非易失性計算機存儲介質可以是上述實施例中所述裝置中所包含的非易失性計算機存儲介質;也可以是單獨存在,未裝配入終端中的非易失性計算機存儲介質。上述非易失性計算機存儲介質存儲有一個或者多個程序,當所述一個或者多個程序被一個設備執行時,使得所述設備執行以下的操作指令:

獲取推送消息和客戶端id;

確定客戶端id所屬進程,並將推送消息和客戶端id存入與該進程對應的共享內存塊中;

當到達消息推送時間時,各進程同時從對應的共享內存塊中讀取推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端。

進一步地,在所述獲取推送消息和客戶端id之前,還包括:

建立多個進程,每個進程連接多個客戶端;

獲取連接在各進程上的客戶端的客戶端id,建立客戶端id與該客戶端id所屬進程的進程id之間的映射關係;

為每個進程分配一共享內存塊;

建立進程的進程id與該進程對應的共享內存塊的共享內存塊id之間的映射關係。

進一步地,所述確定客戶端id所屬進程,並將推送消息和客戶端id存入與該進程對應的共享內存塊中,包括:

根據客戶端id與進程id的映射關係,查找所述客戶端id對應的進程id;

根據進程id與共享內存塊id的映射關係,查找所述進程id對應的共享內存塊id,將所述推送消息和客戶端id存入與該共享內存塊id對應的共享內存塊中。

可選地,所述進程從對應的共享內存塊中讀取推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端,包括:

逐條讀取共享內存塊中的推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端,直至將共享內存塊中所有的推送消息都推送給相應的客戶端。

可選地,所述進程從對應的共享內存塊中讀取推送消息,根據推送消息與客戶端id的對應關係,將推送消息發送至與所述客戶端id對應的客戶端,包括:

獲取連接在進程上的客戶端的客戶端id;

從進程對應的共享內存塊中讀取與所述客戶端id對應的推送消息,

將所述推送消息發送至與所述客戶端id對應的客戶端;

判斷所述客戶端id是否為最後一個客戶端id,

若是,結束推送消息的推送,若否,對下一個客戶端進行推送消息的推送。

進一步的,還包括:如果從進程對應的共享內存塊中沒有讀取到與所述客戶端id對應的推送消息,則判斷所述客戶端id是否為最後一個客戶端id,若是,結束推送消息的推送,若否,對下一個客戶端進行推送消息的推送。

本實施例基於共享內存及多進程技術,通過多進程同時從共享內存讀取消息並推送給客戶端,解決了消息推送不及時的問題,實現了高效、實時的消息推送。

以上描述僅為本申請的較佳實施例以及對所運用技術原理的說明。本領域技術人員應當理解,本申請中所涉及的發明範圍,並不限於上述技術特徵的特定組合而成的技術方案,同時也應涵蓋在不脫離所述發明構思的情況下,由上述技術特徵或其等同特徵進行任意組合而形成的其它技術方案。例如上述特徵與本申請中公開的(但不限於)具有類似功能的技術特徵進行互相替換而形成的技術方案。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀