本發(fā)明涉及RCS融合消息類領域,尤指一種呈現(xiàn)狀態(tài)通知方法和裝置。
背景技術:
RCS(融合通訊,Rich Communication Suite)定義了基于IMS與現(xiàn)有移動網(wǎng)絡的一組業(yè)務能力,為移動用戶提供增強型地址簿、內(nèi)容共享、文件傳輸、增強型消息等功能。
在RCS中,呈現(xiàn)(presence或者presence information)用以傳達某一用戶通過一組設備進行通信的能力和意愿。常見的及時通信一般為用戶提供的可選狀態(tài)有:聯(lián)機、忙碌、馬上回來、離開、接聽電話、外出就餐和顯示為脫機。這些狀態(tài)便稱為“呈現(xiàn)狀態(tài)”,它們表征了用戶當前處于的某種狀態(tài)和用戶進行通信的意愿。同時,這些狀態(tài)還反映出與該用戶進行通信的能力??梢酝ㄟ^呈現(xiàn)服務器(PS AS)來管理用戶的呈現(xiàn)狀態(tài)。例如,若用戶處于“脫機”狀態(tài)的話,別的用戶便不能用即時消息與之通信,當某一用戶的狀態(tài)變化,呈現(xiàn)服務器需要實時通知該用戶的所有好友。
一個最簡單的呈現(xiàn)狀態(tài)的通知過程如圖1所示:一個用戶A訂閱(SUBSCRIBE)他感興趣的另一用戶B的呈現(xiàn)狀態(tài),用戶B接受訂閱請求之后,每次用戶B的呈現(xiàn)狀態(tài)發(fā)生變化之后,用戶B會發(fā)布(PUBLISH)自己新的呈現(xiàn)狀態(tài),這個新的呈現(xiàn)狀態(tài)會通過呈現(xiàn)服務器通知(NOTIFY)給用戶A。
在用戶B有多個好友訂閱用戶B的呈現(xiàn)狀態(tài)的情況下,用戶B對應的呈現(xiàn)服務器會生成多個用戶B的呈現(xiàn)狀態(tài)通知消息,分別發(fā)送給用戶B的多個好友。
當用戶規(guī)模達到一定數(shù)量,在移動網(wǎng)絡信號不穩(wěn)定導致狀態(tài)切換頻繁時,狀態(tài)通知消息會急增,各呈現(xiàn)服務器(PS AS,presence server)之間的通知 消息轉發(fā)就會成為瓶頸,影響用戶體驗。
技術實現(xiàn)要素:
為了解決上述問題,本發(fā)明提出了一種呈現(xiàn)狀態(tài)通知方法和裝置,能夠提高。
為了達到上述目的,本發(fā)明提出了一種呈現(xiàn)狀態(tài)通知方法,所述方法包括:
接收第一用戶發(fā)送的狀態(tài)變化信息;其中;狀態(tài)變化信息用于通知第一用戶的呈現(xiàn)狀態(tài)的變化;
確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,對于歸屬于其他呈現(xiàn)服務器的好友用戶,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,以通過各個好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息發(fā)送給各個好友用戶。
優(yōu)選地,所述呈現(xiàn)狀態(tài)通知方法還包括:
接收其他呈現(xiàn)服務器發(fā)送的第二用戶對應的第二狀態(tài)變化通知消息,根據(jù)第二用戶對應的第二好友列表,確定本呈現(xiàn)服務器中第二用戶對應的訂閱用戶;
將所述第二狀態(tài)變化通知消息發(fā)送給所述第二用戶對應的訂閱用戶。
優(yōu)選地,在所述確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器之后,所述呈現(xiàn)狀態(tài)通知方法還包括:
對于歸屬本呈現(xiàn)服務器的好友用戶,向歸屬本呈現(xiàn)服務器的各個好友用戶分別下發(fā)第一用戶的狀態(tài)變化通知消息。
優(yōu)選地,在所述確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器之前,所述呈現(xiàn)狀態(tài)通知方法還包括:
確認第一用戶是否處于穩(wěn)定狀態(tài);
在所述第一用戶處于穩(wěn)定狀態(tài)的情況下,執(zhí)行所述確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器的步驟。
優(yōu)選地,所述確認第一用戶是否處于穩(wěn)定狀態(tài)包括:
啟動定時器,如果在定時器計時到達預定時間時,如果沒有再次接收到第一用戶對應的狀態(tài)變化通知消息,則判定第一用戶處于穩(wěn)定狀態(tài);
如果在定時器計時到達預定時間內(nèi),如果再次接收到第一用戶對應的狀態(tài)變化通知消息,則重新啟動定時器,并再次判斷第一用戶是否處于穩(wěn)定狀態(tài)。
優(yōu)選地,在所述確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器之前,所述呈現(xiàn)狀態(tài)通知方法包括:
針對歸屬于本地服務器的第一用戶建立第一好友列表,其中,第一好友列表中記錄第一用戶的全部好友用戶;以及,
當歸屬于本地服務器的第一用戶與第二用戶是好友關系時,針對所述第二用戶建立第二好友列表,其中,第二好友列表中記錄了第二用戶在本地呈現(xiàn)服務器中的好友用戶,所述第二用戶歸屬于本地服務器或其他服務器。
為了達到上述目的,本發(fā)明還提出了一種呈現(xiàn)狀態(tài)通知裝置,設置在呈現(xiàn)服務器上,所述裝置包括:
用戶接收單元,用于接收第一用戶發(fā)送的狀態(tài)變化信息;其中;狀態(tài)變化信息用于通知第一用戶的呈現(xiàn)狀態(tài)的變化;
轉發(fā)單元,用于確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,以通過各個好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息發(fā)送給各個好友用戶。
優(yōu)選地,所述呈現(xiàn)狀態(tài)通知裝置還包括:
服務器接收單元,用于接收其他呈現(xiàn)服務器發(fā)送的第二用戶對應的第二 狀態(tài)變化通知消息,根據(jù)第二用戶對應的第二好友列表,確定本呈現(xiàn)服務器中第二用戶對應的訂閱用戶;
下發(fā)單元,用于將所述第二狀態(tài)變化通知消息發(fā)送給所述第二用戶對應的訂閱用戶。
優(yōu)選地,所述轉發(fā)單元還用于:對于歸屬本呈現(xiàn)服務器的好友用戶,向歸屬本呈現(xiàn)服務器的各個好友用戶分別下發(fā)第一用戶的狀態(tài)變化通知消息。
優(yōu)選地,所述呈現(xiàn)狀態(tài)通知裝置還包括:
穩(wěn)定狀態(tài)確認單元,用于確認第一用戶是否處于穩(wěn)定狀態(tài);在所述第一用戶處于穩(wěn)定狀態(tài)的情況下,通過轉發(fā)單元執(zhí)行所述確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器的過程。
優(yōu)選地,所述穩(wěn)定狀態(tài)確認單元包括:
啟動模塊,用于啟動定時器,如果在定時器計時到達預定時間時,如果沒有再次接收到第一用戶對應的狀態(tài)變化通知消息,則判定第一用戶處于穩(wěn)定狀態(tài);
重判模塊,用于在定時器計時到達預定時間內(nèi),再次接收到第一用戶對應的狀態(tài)變化通知消息的情況下,則重新啟動定時器,并再次判斷第一用戶是否處于穩(wěn)定狀態(tài)。
優(yōu)選地,所述呈現(xiàn)狀態(tài)通知裝置還包括:
好友列表設置單元,用于針對歸屬于本地服務器的第一用戶建立第一好友列表,其中,第一好友列表中記錄第一用戶的全部好友用戶;以及,
當歸屬于本地服務器的第一用戶與第二用戶是好友關系時,針對所述第二用戶建立第二好友列表,其中,第二好友列表中記錄了第二用戶在本地呈現(xiàn)服務器中的好友用戶,所述第二用戶歸屬于本地服務器或其他服務器。
與現(xiàn)有技術相比,本發(fā)明提供的技術方案包括:接收第一用戶對應的狀態(tài)變化通知消息;其中;狀態(tài)變化通知消息用于通知第一用戶的呈現(xiàn)狀態(tài)的變化;確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,對于歸屬于其他呈現(xiàn) 服務器的好友用戶,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給所述好友用戶所歸屬的呈現(xiàn)服務器,以通過所述好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息發(fā)送給各個好友用戶。通過本發(fā)明的方案,當任一用戶A的呈現(xiàn)狀態(tài)發(fā)生變化時,用戶A歸屬的PS AS A不需要根據(jù)用戶A的好友數(shù)目,生成對應數(shù)目的狀態(tài)變化通知消息,并分別通過各個好友歸屬的PS AS將狀態(tài)變化通知消息發(fā)送給用戶A的各個好友,而是把PS AS間多條消息轉發(fā)合并成一條廣播消息,PS AS A分別向各個好友歸屬的PS AS廣播一條用戶A的狀態(tài)變化通知消息,并通過各個好友歸屬的PS AS,分別通知本地服務器中的用戶A的好友用戶,從而減少了PS AS之間的消息轉發(fā)量,從而減少了PS AS的信息轉發(fā)量,提高了PS AS的性能,改善了用戶體驗。
附圖說明
下面對本發(fā)明實施例中的附圖進行說明,實施例中的附圖是用于對本發(fā)明的進一步理解,與說明書一起用于解釋本發(fā)明,并不構成對本發(fā)明保護范圍的限制。
圖1為現(xiàn)有技術提供的一種呈現(xiàn)狀態(tài)通知方法的流程圖;
圖2A和圖2B為本發(fā)明實施例提供的一種呈現(xiàn)狀態(tài)通知方法的流程圖;
圖3A、圖3B、圖3C分別為本發(fā)明實施例提供的一種呈現(xiàn)狀態(tài)通知方法的流程圖;
圖4為本發(fā)明實施例提供的一種呈現(xiàn)狀態(tài)通知裝置的結構組成示意圖。
具體實施方式
為了便于本領域技術人員的理解,下面結合附圖對本發(fā)明作進一步的描述,并不能用來限制本發(fā)明的保護范圍。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的各種方式可以相互組合。
參見圖2A,本發(fā)明提出了一種呈現(xiàn)狀態(tài)通知方法,所述方法包括:
步驟200,第一呈現(xiàn)服務器接收第一用戶發(fā)送的狀態(tài)變化信息;其中; 狀態(tài)變化信息用于通知第一用戶的呈現(xiàn)狀態(tài)的變化;
步驟400,確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,以通過各個好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息發(fā)送給各個好友用戶。
其中,對于歸屬本呈現(xiàn)服務器的好友用戶,直接下發(fā)第一用戶的狀態(tài)變化通知消息;對于歸屬于其他呈現(xiàn)服務器的好友用戶,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,以通過各個好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息發(fā)送給各個好友用戶。
本發(fā)明實施例中,在需要轉狀態(tài)變化通知消息給其他呈現(xiàn)服務器時,相對于現(xiàn)有技術中針對各個好友用戶分別發(fā)送的方式,本發(fā)明實施例采用合并狀態(tài)變化通知消息的方式來轉發(fā),通過廣播消息,分別給每個不同的呈現(xiàn)服務器只發(fā)一條第一用戶對應的狀態(tài)變化通知消息,由各個好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息分發(fā)給本地所有好友用戶。
本發(fā)明實施例中,步驟400中,通過各個好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息發(fā)送給各個好友用戶包括:
步驟411,第一呈現(xiàn)服務器生成對應的狀態(tài)變化通知消息;
步驟412,在第一用戶的好友用戶歸屬于第一呈現(xiàn)服務器的情況下,第一呈現(xiàn)服務器將狀態(tài)變化通知消息發(fā)送給歸屬本地呈現(xiàn)服務器的第一用戶的好友用戶;
步驟413,在第一用戶的好友用戶歸屬于其他呈現(xiàn)服務器的情況下,第一呈現(xiàn)服務器將狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶歸屬的其他呈現(xiàn)服務器。
下面結合一個具體的例子對狀態(tài)變化通知消息的發(fā)送進行說明。
用戶A歸屬于呈現(xiàn)服務器A,用戶A有30個好友,其中,好友1~好友10跟用戶A歸屬于呈現(xiàn)服務器A,好友11~好友20歸屬于呈現(xiàn)服務器B, 好友21~好友30歸屬于呈現(xiàn)服務器C,當?shù)谝怀尸F(xiàn)服務器接收到用戶A發(fā)送的狀態(tài)變化通知消息時,呈現(xiàn)服務器A將用戶A對應的狀態(tài)變化通知消息發(fā)送給好友1~好友10,呈現(xiàn)服務器A將用戶A對應的狀態(tài)變化通知消息分別發(fā)送給呈現(xiàn)服務器B和呈現(xiàn)服務器C,從而通過呈現(xiàn)服務器B將用戶A對應的狀態(tài)變化通知消息發(fā)送給好友11~好友20,以及通過呈現(xiàn)服務器C將用戶A對應的狀態(tài)變化通知消息發(fā)送給好友21~好友30。
參見圖2B,本發(fā)明實施例中,所述呈現(xiàn)狀態(tài)通知方法還包括:
步驟700,接收其他呈現(xiàn)服務器發(fā)送的第二用戶對應的第二狀態(tài)變化通知消息,根據(jù)第二用戶對應的第二好友列表,確定本呈現(xiàn)服務器中第二用戶對應的訂閱用戶;
步驟800,將所述第二狀態(tài)變化通知消息發(fā)送給所述第二用戶對應的訂閱用戶。
下面介紹另一種方式實現(xiàn)狀態(tài)變化通知消息的發(fā)送。
本發(fā)明實施例中,步驟400中,通過各個好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息發(fā)送給各個好友用戶包括:
步驟421,第一呈現(xiàn)服務器生成對應的狀態(tài)變化通知消息;
步驟422,第一呈現(xiàn)服務器將狀態(tài)變化通知消息發(fā)送給歸屬本地呈現(xiàn)服務器的第一用戶的好友用戶;
步驟423,第一呈現(xiàn)服務器將狀態(tài)變化通知消息通過廣播消息的形式發(fā)送給其他呈現(xiàn)服務器。
下面結合一個具體的例子對狀態(tài)變化通知消息的發(fā)送進行說明。
用戶A歸屬于呈現(xiàn)服務器A,用戶A有30個好友,其中,好友1~好友10跟用戶A歸屬于呈現(xiàn)服務器A,好友11~好友20歸屬于呈現(xiàn)服務器B,好友21~好友30歸屬于呈現(xiàn)服務器C,當?shù)谝怀尸F(xiàn)服務器接收到用戶A發(fā)送的狀態(tài)變化通知消息時,呈現(xiàn)服務器A將用戶A對應的狀態(tài)變化通知消息發(fā)送給好友1~好友10,呈現(xiàn)服務器A將狀態(tài)變化通知消息通過廣播消息的形式發(fā)送給其他呈現(xiàn)服務器,包括呈現(xiàn)服務器B、呈現(xiàn)服務器C、呈服務器 D、和呈現(xiàn)服務器E,
呈現(xiàn)服務器B接收到用戶A對應的狀態(tài)變化通知消息之后,判斷本地歸屬用戶中是否包括用戶A的好友用戶(訂閱用戶),如果有,則將用戶A對應的狀態(tài)變化通知消息發(fā)送給用戶A的好友用戶,如果沒有,則將用戶A對應的狀態(tài)變化通知消息丟棄,由于好友11~好友20歸屬于呈現(xiàn)服務器B,因此呈現(xiàn)服務器B將用戶A對應的狀態(tài)變化通知消息發(fā)送給好友11~好友20,同樣地,通過呈現(xiàn)服務器C將用戶A對應的狀態(tài)變化通知消息發(fā)送給好友21~好友30。
呈服務器D接收到用戶A對應的狀態(tài)變化通知消息之后,判斷本地歸屬用戶中是否包括用戶A的好友用戶(訂閱用戶),判斷結果,則將用戶A對應的狀態(tài)變化通知消息發(fā)送給用戶A的好友,如果沒有,則將用戶A對應的狀態(tài)變化通知消息丟棄,由于用戶A沒有好友歸屬于呈現(xiàn)服務器C,因此呈現(xiàn)服務器C將用戶A對應的狀態(tài)變化通知消息丟棄,同樣地,呈現(xiàn)服務器D將用戶A對應的狀態(tài)變化通知消息丟棄。
現(xiàn)有技術中,當用戶A的狀態(tài)有變化時,用戶A歸屬的PS AS A會生成30個用戶A的狀態(tài)變化通知消息,分別發(fā)送給用戶A的30個好友,PS AS A轉發(fā)10個通知消息給PS AS B,同時PS AS A轉發(fā)10個通知消息給PS AS C。本發(fā)明實施例提供的呈現(xiàn)狀態(tài)通知方法,把PS AS間多條消息轉發(fā)合并成一條廣播消息,PS AS A分別向PS AS B、PS AS C廣播一條用戶A的狀態(tài)變化通知消息,并通過PS AS B、PS AS C分別在本地服務器中的用戶A的好友用戶,通過上述呈現(xiàn)狀態(tài)通知方法,減少了PS AS之間的消息轉發(fā)量,從而減少了PS AS的信息轉發(fā)量,提高了PS AS的性能,改善了用戶體驗。
本發(fā)明實施例中,在步驟400之前,所述呈現(xiàn)狀態(tài)通知方法包括:
步驟100;針對歸屬于本地服務器的第一用戶建立第一好友列表,其中,第一好友列表中記錄第一用戶的全部好友用戶;以及,
當歸屬于本地服務器的第一用戶與第二用戶是好友關系時,針對所述第二用戶建立第二好友列表,其中,第二好友列表中記錄了第二用戶在本地呈現(xiàn)服務器中的好友用戶,所述第二用戶歸屬于本地服務器或其他服務器。
也就是說,本發(fā)明實施例中,針對任一個用戶A,均建立并維護對應的第一好友列表和第二好友列表,其中,第一好友列表存儲在用戶A對應的呈現(xiàn)服務器上,第一好友列表中記錄用戶A的全部好友用戶,以及各個好友用戶歸屬的呈現(xiàn)服務器;在所述各個好友用戶歸屬的呈現(xiàn)服務器中,分別存儲有用戶A對應的第二好友列表;第二好友列表中記錄用戶A在本地呈現(xiàn)服務器中的好友用戶。
本發(fā)明實施例中,在第二用戶是第一用戶的好友用戶時,默認第二用戶是第一用戶的訂閱用戶為例進行了說明,也就是說,對于針對第一用戶建立的第一好友列表,其中,第一好友列表中記錄第一用戶的全部好友用戶;即,第一好友列表中記錄第一用戶的全部訂閱用戶,對于針對第一用戶建立的第二好友列表,第二好友列表中記錄了第一用戶在本地呈現(xiàn)服務器中的好友用戶,即第二好友列表中記錄了第一用戶在本地呈現(xiàn)服務器中的訂閱用戶。
因此,本發(fā)明實施例中,以好友用戶和訂閱用戶表達相同的含義為例進行了說明。此外,可以對好友用戶和訂閱用戶進行卻區(qū)分,訂閱用戶為好友用戶的自己,例如,某個第一用戶可以訂閱自己部分好友用戶的呈現(xiàn)狀態(tài),在這種情況下,第一好友列表設置為記錄第一用戶的全部訂閱用戶,第二好友列表設置為記錄了第一用戶在本地呈現(xiàn)服務器中的訂閱用戶,呈現(xiàn)服務器根據(jù),第一好友列表和第二好友列表中記錄的訂閱用戶進行狀態(tài)變化通知消息的轉發(fā)。
下面結合一個具體的例子對第一好友列表和第二好友列表進行說明。
用戶A有30個好友,用戶A有對應的呈現(xiàn)服務器A中存儲有第一好友列表,第一好友列表中記錄用戶A的30個好友用戶,以及30個好友用戶分別對應的呈現(xiàn)服務器;其中,第一好友列表中記錄了好友1~好友10跟用戶A歸屬于同一個呈現(xiàn)服務器A,好友11~好友20歸屬于呈現(xiàn)服務器B,好友21~好友30歸屬于呈現(xiàn)服務器C,在呈現(xiàn)服務器A中,記錄了用戶A對應的一個第二好友列表,該第二好友列表記錄了用戶A的全部好友用戶中歸屬于呈現(xiàn)服務器A的好友1~好友10;在呈現(xiàn)服務器B中,記錄了用戶A對應的另一個第二好友列表,該第二好友列表記錄了用戶A的全部好友用戶中歸屬于呈現(xiàn)服務器B的好友11~好友20;在呈現(xiàn)服務器C中,記錄了用 戶A對應的又一個第二好友列表,該第二好友列表記錄了用戶A的全部好友用戶中歸屬于呈現(xiàn)服務器C的好友21~好友30。
其中,第一好友列表為好友關系表,第二好友列表為用戶被關注表,當用戶A新增一個好友用戶B時,用戶A歸屬的PS AS A在好友關系表中新增保存一條記錄(用戶A,好友用戶B),同時好友用戶B歸屬的PS AS B在用戶A對應的被關注表中也新增保存一條記錄(好友用戶A,用戶B)。
本發(fā)明實施例中,呈現(xiàn)服務器A生成對應的狀態(tài)變化通知消息通過廣播消息的格式發(fā)送給其他的呈現(xiàn)服務器,廣播消息的URL設置為用戶A好友列表標識,如sip:userA_list@ps_serverb,呈現(xiàn)服務器B收到這條通知消息后,根據(jù)URL判斷這條消息要發(fā)給用戶A歸屬于本地呈現(xiàn)服務器上的所有好友,呈現(xiàn)服務器B查詢本地用戶A的第二好友列表,得到用戶A的好友用戶好友11~好友20,然后把該狀態(tài)變化通知消息分別下發(fā)給好友11~好友20。
本發(fā)明實施例中,在步驟400之前,所述呈現(xiàn)狀態(tài)通知方法還包括:
步驟300、確認第一用戶是否處于穩(wěn)定狀態(tài);在所述第一用戶處于穩(wěn)定狀態(tài)的情況下,執(zhí)行步驟400;否則,跳轉至步驟200;
本發(fā)明實施例中,在步驟300中,所述確認第一用戶是否處于穩(wěn)定狀態(tài)包括:
啟動定時器,如果在定時器計時到達預定時間時,如果沒有再次接收到第一用戶對應的狀態(tài)變化通知消息,則判定第一用戶處于穩(wěn)定狀態(tài);
如果在定時器計時到達預定時間內(nèi),如果再次接收到第一用戶對應的狀態(tài)變化通知消息,則重新啟動定時器,并再次判斷第一用戶是否處于穩(wěn)定狀態(tài)。
下面結合一個具體的例子對步驟300中確認第一用戶是否處于穩(wěn)定狀態(tài)的過程進行說明。
在呈現(xiàn)服務器中設置狀態(tài)內(nèi)存表和臨時狀態(tài)內(nèi)存表,其中,狀態(tài)內(nèi)存表用于記錄用戶的穩(wěn)定狀態(tài)下的呈現(xiàn)狀態(tài),臨時狀態(tài)內(nèi)存表用于記錄用戶的穩(wěn)定狀態(tài)之前的呈現(xiàn)狀態(tài);如果用戶在狀態(tài)內(nèi)存表中記錄的呈現(xiàn)狀態(tài)發(fā)生變化, 用戶歸屬的呈現(xiàn)服務器將開啟用戶的狀態(tài)變化的通知流程。例如,當用戶A狀態(tài)發(fā)生變化時,服務器緩存該用戶狀態(tài)變化信息至臨時狀態(tài)內(nèi)存表,并設置一個狀態(tài)持續(xù)定時器(如2分鐘),如果定時器到(2分鐘后)該狀態(tài)一直保持,沒有再發(fā)生切換變化,系統(tǒng)則確認該狀態(tài)為終端的最新穩(wěn)定狀態(tài),從臨時狀態(tài)內(nèi)存表中取出該信息,更新系統(tǒng)保存的狀態(tài)內(nèi)存表,并進行下一步通知其他好友用戶的流程,同時刪除臨時狀態(tài)內(nèi)存表中緩存的用戶狀態(tài)變化信息。如果在定時未到之前(2分鐘內(nèi))系統(tǒng)又收到該用戶的狀態(tài)變化,則系統(tǒng)認為之前該用戶的狀態(tài)變化是一個臨時、短暫性的狀態(tài)變化,從臨時狀態(tài)內(nèi)存表中刪除之前緩存的用戶狀態(tài)變化信息及相應的定時器,重新緩存該用戶最新的狀態(tài)變化信息到臨時狀態(tài)內(nèi)存表,并設置相應的定時器,并等待確認是否為穩(wěn)定狀態(tài)。
本發(fā)明實施例提供的呈現(xiàn)狀態(tài)通知方法中,一方面,通過對用戶狀態(tài)進行管理,識別出用戶的穩(wěn)定狀態(tài),過濾掉臨時性的用戶狀態(tài)變化信息,避免在移動網(wǎng)絡信號不穩(wěn)定導致狀態(tài)頻繁切換而產(chǎn)生的大量臨時狀態(tài)變化通知;另一方面,在某個用戶的呈現(xiàn)狀態(tài)發(fā)生變化,且用戶A處于穩(wěn)定狀態(tài)時,通過第一好友列表和第二好友列表,在PS AS間廣播一條用戶A的最新狀態(tài)消息,來替代用戶A給每個好友發(fā)送的通知消息,來減少PS AS之間的消息轉發(fā)量,從而減少了PS AS之間的信息轉發(fā)量,提高了PS AS的性能,改善了用戶體驗。
下面結合具體的實施場景進行說明。
參見圖3A,為本發(fā)明實施例提出的一種呈現(xiàn)狀態(tài)通知方法的信令交互示意圖,其中,用戶A歸屬于PS AS A,該呈現(xiàn)狀態(tài)通知方法包括:
步驟11:用戶A的呈現(xiàn)狀態(tài)發(fā)生變化時,用戶A發(fā)送狀態(tài)變化信息到用戶A歸屬的PS AS A;
步驟12:PS AS A緩存該用戶狀態(tài)變化信息至臨時狀態(tài)內(nèi)存表,并設置一個狀態(tài)持續(xù)定時器(如2分鐘);
步驟13:如果定時器到(2分鐘后)該狀態(tài)一直保持,沒有再發(fā)生切換變化,系統(tǒng)則確認該狀態(tài)為終端的最新穩(wěn)定狀態(tài);轉步驟16進行后續(xù)流程處 理;
步驟14:如果在定時未到之前(2分鐘內(nèi))系統(tǒng)又收到該用戶的狀態(tài)變化,則從臨時狀態(tài)內(nèi)存表中刪除之前緩存的用戶狀態(tài)變化信息及相應的定時器;
步驟15:PS AS A重新緩存該用戶最新的狀態(tài)變化信息到臨時狀態(tài)內(nèi)存表,并設置相應的定時器,轉步驟13;
步驟16:從臨時狀態(tài)內(nèi)存表中取出該信息,更新系統(tǒng)保存的用戶狀態(tài),刪除臨時狀態(tài)內(nèi)存表中緩存的用戶狀態(tài)變化信息;并進行下一步,通知其他好友用戶。
參見圖3B,為本發(fā)明實施例提出的用戶A和用戶A的好友歸屬于同一個呈現(xiàn)服務器的情況下,呈現(xiàn)狀態(tài)通知過程的交互示意圖,如圖3B所示,用戶A及其好友1~好友10歸屬于同一個PS AS A,該呈現(xiàn)狀態(tài)通知方法包括:
步驟21,用戶A發(fā)送狀態(tài)變化信息到用戶A歸屬的PS AS A;
步驟22,PS AS A通過用戶狀態(tài)管理識別出用戶A的穩(wěn)定狀態(tài)發(fā)生變化。
通過用戶狀態(tài)管理識別出用戶A的穩(wěn)定狀態(tài)發(fā)生變化是指,PS AS A接收用戶A發(fā)送的的狀態(tài)變化信息,并確認用戶A處于穩(wěn)定狀態(tài)。
步驟23,PS AS A查詢用戶A的第二好友列表,用戶A的好友用戶好友1~好友10歸屬于本PS AS A;
步驟241,PS AS A生成用戶A對應的狀態(tài)變化通知消息下發(fā)給用戶好友1;
步驟242,PS AS A生成用戶A對應的狀態(tài)變化通知消息下發(fā)給用戶好友2;
......
步驟249,PS AS A生成用戶A對應的狀態(tài)變化通知消息下發(fā)給用戶好友9;
步驟2410,PS AS A生成用戶A對應的狀態(tài)變化通知消息下發(fā)給用戶好友10。
其中,步驟243~步驟248省略。需要說明,步驟241~步驟2410的順序可以更換。
參見圖3C,為本發(fā)明實施例提出的用戶A和用戶A的好友歸屬于不同呈現(xiàn)服務器的情況下,呈現(xiàn)狀態(tài)通知過程的交互示意圖,如圖3C所示,用戶A歸屬于PS AS A,用戶A的好友11~好友20歸屬于另一個PS AS B,該呈現(xiàn)狀態(tài)通知方法包括:
步驟31,用戶A發(fā)送狀態(tài)變化信息到用戶A歸屬的PS AS A;
步驟32,PS AS A通過用戶狀態(tài)管理識別出用戶A的穩(wěn)定狀態(tài)發(fā)生變化;
步驟33,PS AS A查詢用戶A的第二好友列表,發(fā)現(xiàn)用戶A的好友用戶好友11~好友20歸屬于PS AS B;
步驟34,PS AS A生成一條用戶A對應的狀態(tài)變化通知消息,并轉發(fā)給PS AS B,其中,狀態(tài)變化通知消息的目的URL為用戶A的好友列表標識,如sip:userA_list@ps_serverb;
步驟35,PS AS B收到這條通知消息后,根據(jù)URL判斷這條消息要發(fā)給用戶A歸屬于本服務器上的所有好友;
步驟36,PS AS B查詢本地用戶好友關系,得到用戶A的好友用戶好友11~好友20;
步驟371,PS AS B生成用戶A對應的狀態(tài)變化通知消息(用戶A最新的狀態(tài)通知notify)下發(fā)給用戶好友11;
步驟372,PS AS B生成用戶A最新的狀態(tài)通知notify下發(fā)給用戶好友12;
......
步驟379,PS AS B生成用戶A最新的狀態(tài)通知notify下發(fā)給用戶好友19;
步驟3710,PS AS B生成用戶A最新的狀態(tài)通知notify下發(fā)給用戶好友20;
其中,步驟383~步驟388省略。需要說明,步驟381~步驟3810的順序可以更換。
基于與上述實施例相同或相似的構思,本發(fā)明實施例還提供一種呈現(xiàn)狀態(tài)通知裝置,設置在呈現(xiàn)服務器上,參見圖4,本發(fā)明提出的呈現(xiàn)狀態(tài)通知裝置包括:
用戶接收單元20,用于接收第一用戶發(fā)送的狀態(tài)變化信息;其中;狀態(tài)變化信息用于通知第一用戶的呈現(xiàn)狀態(tài)的變化;
轉發(fā)單元40,用于確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,對于歸屬于其他呈現(xiàn)服務器的好友用戶,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給所述好友用戶所歸屬的呈現(xiàn)服務器,以通過所述好友用戶歸屬的呈現(xiàn)服務器,將第一用戶對應的狀態(tài)變化通知消息發(fā)送給各個好友用戶。
本發(fā)明實施例中,所述呈現(xiàn)狀態(tài)通知裝置還包括:
服務器接收單元70,用于接收其他呈現(xiàn)服務器發(fā)送的第二用戶對應的第二狀態(tài)變化通知消息,根據(jù)第二用戶對應的第二好友列表,確定本呈現(xiàn)服務器中第二用戶對應的訂閱用戶;
下發(fā)單元80,用于將服務器接收單元70接收的第二狀態(tài)變化通知消息發(fā)送給所述第二用戶對應的訂閱用戶。
優(yōu)選地,所述轉發(fā)單元40還用于:對于歸屬本呈現(xiàn)服務器的好友用戶,向歸屬本呈現(xiàn)服務器的各個好友用戶分別下發(fā)第一用戶的狀態(tài)變化通知消息。其中,根據(jù)第一用戶對應的第二好友列表,確定本呈現(xiàn)服務器中第一用戶對應的訂閱用戶;并將第一用戶的狀態(tài)變化通知消息下發(fā)給第一用戶對應的訂閱用戶。
本發(fā)明實施例中,所述呈現(xiàn)狀態(tài)通知裝置還包括:
穩(wěn)定狀態(tài)確認單元30,用于確認第一用戶是否處于穩(wěn)定狀態(tài);在所述第 一用戶處于穩(wěn)定狀態(tài)的情況下,通過轉發(fā)單元執(zhí)行所述確定第一用戶的好友用戶所歸屬的呈現(xiàn)服務器,通過廣播消息將第一用戶對應的狀態(tài)變化通知消息發(fā)送給第一用戶的好友用戶所歸屬的呈現(xiàn)服務器的過程。
本發(fā)明實施例中,所述穩(wěn)定狀態(tài)確認單元30包括:
啟動模塊31,用于啟動定時器,如果在定時器計時到達預定時間時,如果沒有再次接收到第一用戶對應的狀態(tài)變化通知消息,則判定第一用戶處于穩(wěn)定狀態(tài);
重判模塊32,用于在定時器計時到達預定時間內(nèi),再次接收到第一用戶對應的狀態(tài)變化通知消息的情況下,則重新啟動定時器,并再次判斷第一用戶是否處于穩(wěn)定狀態(tài)。
本發(fā)明實施例中,所述呈現(xiàn)狀態(tài)通知裝置還包括:
好友列表設置單元10,用于針對歸屬于本地服務器的第一用戶建立第一好友列表,其中,第一好友列表中記錄第一用戶的全部好友用戶;以及,
當歸屬于本地服務器的第一用戶與第二用戶是好友關系時,針對所述第二用戶建立第二好友列表,其中,第二好友列表中記錄了第二用戶在本地呈現(xiàn)服務器中的好友用戶,所述第二用戶歸屬于本地服務器或其他服務器。
需要說明的是,以上所述的實施例僅是為了便于本領域的技術人員理解而已,并不用于限制本發(fā)明的保護范圍,在不脫離本發(fā)明的發(fā)明構思的前提下,本領域技術人員對本發(fā)明所做出的任何顯而易見的替換和改進等均在本發(fā)明的保護范圍之內(nèi)。