專利名稱:一種實現已讀狀態同步的方法及設備的制作方法
技術領域:
本發明涉及通信技術領域,尤其涉及通信系統中接收方多個設備之間消息已讀狀態同步的方法及設備。
背景技術:
在通信系統的消息交互中,消息的發送方可以通過在發送的消息中增加請
^JMDN (即時消息才旨示通4口, Instant Message Disposition Notification ),來
請求消息接收方收到消息后回復消息發送方IMDN,以通知消息發送方消息被處理的情況。
IMDN是一種消息處理通知,包括三個類型的處理通知delivery,processing, read,其中read通知類型用于指示消息接收方是否已經將消息交付給用戶并被用戶閱讀。read通知類型包括三種狀態"read"(已讀)、"forbidden"(禁止)、"error"(出錯)。
當消息發送方需要向消息接收方請求IMDN時,就在發送的消息中包含Disposition-Notification頭域,并在Disposition-Notification頭域中指定想要的通知類型(例如read、 forbidden、 error中的一種或多種),乂人而通過在消息中包含值為"read"的Disposition-Notification頭域來請求消息接收方回復閱讀l艮告。
此外,消息發送方需要向消息接收方請求IMDN時,還要在發送的消息中包含Message-ID頭域,該頭域包含一個全球唯一的消息標識符。當消息發送方收到一個IMDN時,將Message匿ID的值與IMDN中的〈message-id〉元素的^f直進行比較,以確定收到的IMDN是針對哪一條已發出的消息的。
例如,用戶A在發給用戶B的消息中包含頭域值為"read" 的Disposition-Notification頭域來i貪求用戶B回復閱讀才艮告,該消息的Message畫ID值為34jk324j;用戶B收到該消息后向用戶A回復IMDN,并將上述Message-ID
7的值作為該回復的IMDN中〈message-id〉元素的值,當用戶A收到用戶B回復的 該IMDN時,將其中〈message-id〉元素的值與本地存儲的已發消息的 Message-ID值進行匹配,得知Message-ID值為34jk324j的已發消息已被用戶B 閱讀,于是用戶A將該消息的狀態更新為"已讀"。
上述描述的是一個用戶有一個設備接收消息并回復IMDN的情形,當一個 用戶有至少兩個設備能夠接收消息,應用服務器就需要將發送給該用戶的消息 發送到該用戶的至少兩個設備上。
例如,用戶A通過設備1向用戶B發送消息,核心網將該消息路由到用戶B 所在域的應用服務器,該應用服務器檢查該消息頭后,得到用戶B的業務地址, 查詢本地數據庫后得知用戶B有兩個設備可以用于接收該消息,于是該應用服 務器將該消息的目的地址進行改寫,通過核心網將入消息分別發送給用戶B的 設備1和設備2。這種情況下,當用戶A向用戶B請求IMDN時,若用戶B的一個 設備閱讀了用戶A發送的消息,那么用戶B的其它設備上該消息的狀態也需要同 步為"已讀"狀態。
目前,采用數據同步協議可以實現在一個用戶的至少兩個設備上消息狀態 的同步。數據同步協議進行同步的流程,包括連接的建立、進行同步和結束同 步。
發明人在實現本發明的過程中,發現現有技術中至少存在如下問題 應用服務器和接收方設備都必須支持數據同步協議,如果有一方不支持數 據同步協議,就無法通過這種方法實現消息已讀狀態的同步;而且采用數據同 步協議進行狀態同步的過程中需要進行大量消息交互,增加系統負擔,占用網 絡資源。
發明內容
本發明的實施例提供了一種實現已讀狀態同步的方法、設備及系統,能夠 使用較少的信息流量來實現接收方至少兩個設備之間的消息"已讀"狀態同步。 一種實現已讀狀態同步的方法,包括
8收到發送方發送的消息后,向接收方的各設備發送包含閱讀報告請求的消
息;收到所述接收方的設備發送的閱讀報告,該設備是收到包含所述閱讀報告 請求的消息的至少兩個設備中閱讀該消息的設備,所述閱讀報告是閱讀該消息 的設備根據該消息中的所述閱讀報告請求發送的閱讀報告;向所述接收方的設 備中發送所述閱讀報告的設備之外的其它設備發送用于同步的閱讀報告,通知 所述其它設備根據該閱讀報告更新所述消息的狀態。
一種實現已讀狀態同步的應用服務器,包括
第一接收單元,用于接收發送方發送的消息;
第 一發送單元,用于向接收方的各設備發送包含閱讀報告請求的消息; 第二接收單元,用于接收接收方的設備發送的閱讀報告,所述設備是接收 方的收到包含閱讀報告請求的消息的至少兩個設備中閱讀該消息的設備;所述 閱讀報告是閱讀該消息的設備根據該消息中的所述閱讀報告請求發送的閱讀 報告;
第二發送單元,在所述第二接收單元接收了接收方的設備根據所述消息包 含的所述閱讀報告請求發送的閱讀報告后,向所述接收方的設備中發送所述閱
述用于同步的閱讀報告更新所述消息的狀態。
一種消息處理方法,應用于包含多個接收設備的接收方系統中,包括 所述多個接收設備接收應用服務器發送的包含閱讀報告請求的消息; 所述多個接收設備中的至少一個接收設備閱讀所述消息后向應用服務器
發送閱讀報告;
所述多個接收設備中的發送所述閱讀報告的設備之外的其它設備接收所 述應用服務器發送的所述消息的閱讀報告,并根據所述閱讀報告更新已接收的 所述消息的狀態。
一種實現已讀狀態同步的接收方設備,包括
接收單元,用于接收應用服務器發送的包含閱讀報告請求的消息;
閱讀處理單元,用于閱讀所述接收單元接收的所述消息;在閱讀所述消息
9后向所述應用服務器發送閱讀報告;
所述接收單元,還用于接收所述應用服務器發送的所述消息的閱讀報告; 同步單元,用于根據應用服務器發送的所述消息的所述閱讀報告更新所述
消息的狀態。
一種實現已讀狀態同步的系統,包括應用服務器和接收方設備;所述接 收方設備,包括至少一個接收方第一設備,以及至少一個接收方第二設備;
應用服務器,用于收到發送方發送的消息后,向所述接收方設備發送包含 閱讀報告請求的消息;
接收方第一設備,用于接收應用服務器發送的消息,并在閱讀所述消息后 向所述應用服務器發送閱讀報告;
其中,所述應用服務器,接收所述接收方第一設備發送的閱讀所述消息的 閱讀報告后,向所述接收方第二設備發送所述消息的閱讀報告;
接收方第二設備,用于接收應用服務器發送的消息,以及接收所述應用服 務器發送的所述消息的所述閱讀報告,并根據應用服務器發送的所述閱讀報告 更新已接收的所述消息的狀態。
由上述本發明的實施例提供的技術方案可以看出,當接收方的至少兩個設 備通過應用服務器收到同一條消息時,由閱讀所述消息的設備發送所述消息的 閱讀報告給應用服務器,應用服務器將所述消息的閱讀報告轉發給該接收方收
到所述消息的其它設備,從而實現接收方至少兩個設備之間的消息"已讀"狀 態的同步。因此,本發明實施例可以使用較少的信息流量來實現接收方至少兩 個設備之間的消息"已讀"狀態同步,可以避免由于使用數據同步協議進行同 步過程中的大量消息交互,從而減輕了整個系統的負擔。
圖1為本發明實施例提供的方法流程示意圖2為本發明實施例中應用服務器的處理邏輯示意圖3為本發明實施例提供的可以用于具有至少兩個設備的接收方的方法流
10程示意圖4為本發明實施例提供的接收方設備的處理邏輯示意圖5為本發明具體實施例一的處理流程示意圖6為本發明具體實施例二的處理流程示意圖7為本發明具體實施例三的處理流程示意圖8為本發明實施例提供的應用服務器的結構示意圖9為本發明實施例提供的接收方設備的結構示意圖10為本發明實施例提供的系統結構示意圖。
具體實施例方式
在多設備環境下的消息通信中,當消息接收方有至少兩個設備,發送方發 給接收方的消息就會被轉發到接收方的至少兩個設備上。接收方的至少兩個設 備收到同一條消息后,若接收方在其中一臺設備上閱讀了該消息,則接收方其 它設備上該消息的狀態也需要同步為"已讀"狀態。
本發明實施例提供了一種實現狀態同步的方法,可以用于應用服務器實現 消息狀態的同步,具體可以包括收到發送方發送的消息后,向接收方的各i殳 備發送包含閱讀報告請求的消息;收到所述接收方的設備發送的閱讀報告,該 設備是收到包含所述閱讀報告請求的消息的至少兩個設備中閱讀該消息的設 備,所述閱讀報告是閱讀該消息的設備根據該消息中的所述閱讀報告請求發送 的閱讀報告;向所述接收方的設備(包括接收方的設備中發送所述閱讀報告的 設備之外的其它設備,還可以包括發送所述閱讀報告的設備)發送用于同步的 閱讀報告,通知所述接收方的設備根據該閱讀報告更新所述消息的狀態。接收 方的接收了所述消息的設備收到所述消息的閱讀報告后,將該閱讀報告對應的 消息的識別信息與本地已接收消息的識別信息匹配,當找到對應的消息,將所 述消息的狀態更新為已讀,從而實現了接收方的至少兩個設備的消息"已讀" 狀態的同步。
為便于對本發明實施例的理解,下面將結合附圖對本發明實施例的方法流程進行詳細描述。
圖1是本發明實施例的方法流程示意圖,如圖1所示,相應的具體流程可以
包括
11:應用服務器收到發送給接收方的消息,該接收方具有至少兩個設備, 確保所述消息中包含閱讀報告請求后,將其發送給接收方的各設備;例如,應 用服務器收到發送方發送給接收方的消息后,根據該消息的頭域值判斷收到的 該消息是閱讀報告后,可以檢查該消息中是否包含消息發送方的閱讀報告請 求,若沒有包含消息發送方的閱讀報告請求,則在該消息中增加用于狀態同步 的閱讀報告請求后將其發送給接收方,若包含閱讀報告請求則直接將該消息發 送給接收方;
12:接收方的各設備收到包含閱讀報告請求的消息后,閱讀該消息的設備 發送閱讀報告給應用服務器;所述閱讀報告的頭域中可以包含不同值用于標識 應用服務器是否需要向發送方發送所述閱讀報告;例如若接收方設備收到的 消息中包含該消息的發送方的閱讀報告請求,則閱讀該消息的設備回復設置了 表示回復發送方的頭域值的閱讀報告給應用服務器;或者,若消息中包含消息 的發送方的閱讀報告請求,但接收方通過其中一個設備閱讀所述消息后確定不 回復閱讀報告時,閱讀該消息的設備構造設置了用于狀態同步的頭域值的閱讀 才艮告并發送給應用服務器;或者,若消息中沒有包含消息的發送方的閱讀報告 請求,但包含應用服務器增加的用于狀態同步的閱讀報告請求,則閱讀該消息
13:應用服務器收到接收方閱讀了包含閱讀報告請求的消息的設備發送的 閱讀報告后,將閱讀報告發送給接收方接收了所述消息的其它設備,通知其它 設備根據該閱讀報告更新對應的消息的狀態;應用服務器還可以根據該閱讀報 告的頭域值判斷該閱讀報告類型,并根據判斷結果確定除將閱讀報告發送給接 收方接收了所述消息的其它設備外,是否將該閱讀才艮告發送給發送方;例如, 具體的可以包4舌
若該閱讀報告中包含了用于表示回復發送方的頭域值,則判斷該閱讀報告
12是所述接收方閱讀消息的設備根據該消息中包含的所述發送方的閱讀報告請
求回復的閱讀報告;則向所述發送方轉發該閱讀報告,并向所述接收方的接收 了該消息的其它設備發送該消息的閱讀報告;
若該閱讀報告中包含了用于狀態同步的頭域值,則判斷該閱讀報告是所述 接收方閱讀消息的設備由于接收方確定不根據該消息中包含的發送方的閱讀 報告請求回復閱讀報告,而構造的用于狀態同步的閱讀報告;或者該閱讀報告 是所述接收方閱讀該消息的設備根據應用服務器增加的閱讀報告請求,而構造 的用于狀態同步的閱讀報告,則向所述接收方接收了該消息的其它設備發送該 消息的閱讀報告。
接收方的其它設備收到應用服務器轉發的所述消息的閱讀報告后,將閱讀 凈艮告對應的消息的識別信息與本地已接收消息的識別信息匹配,當找到對應的 所述消息,將所述消息的狀態更新為已讀,從而實現了接收方至少兩個設備上 消息"已讀"狀態的同步。
上述內容描述了應用服務器在進行同步時的方法流程,可以看出,本發明 實施例可以使用較少的信息流量來實現接收方至少兩個設備之間的消息"已 讀"狀態的同步,可以避免由于使用數據同步協議進行同步過程中的大量消息 交互,從而減輕系統的負擔。
下面結合附圖2對本發明實施例中應用服務器的處理邏輯進行詳細描述。
圖2是應用服務器的處理邏輯示意圖,如圖2所示,相應的具體處理邏輯可 以包括
201:應用服務器收到消息后,對該消息進行檢查;
202:應用服務器根據該消息的頭域值判斷該消息是不是閱讀報告;由于 接收方發送的閱讀報告也是消息,因此,應用服務器先判斷該消息是否含有 Content-Disposition頭i或;若含有Content-Disposition頭:t或,貝'J進4亍203;若不 含有Content-Disposition頭域,貝'J進行207;
203:檢查Content-Disposition頭域值,并根據頭域值判斷閱讀報告類型; 閱讀報告類型可以包括發送方請求的閱讀報告和狀態同步的閱讀報告;例如在
13IMDN(即時消息指示通^口, Instant Message Disposition Notification )才幾制中, 若該消息含有頭域值為"notification"的Content-Disposition頭i或,則^人為該消息 是消息接收方回復的IMDN ,即閱讀報告;Content-Disposition頭域的 "notification"頭域值在本發明實施例中被擴展為"notification—sender"或者 "notification—sync";因此應用服務器根據Content-Disposition頭域值判斷消息 類型日于,如果該消息的頭i或i"直為"notification—sender"或者"notification—sync", 則該消息為閱讀報告,否則不是閱讀報告;其中,Content-Disposition頭域值 為"notification—sender"的IMDN代表消息接收方對消息發送方所請求的閱讀報 告的回復,Content-Disposition頭域值為"notification—sync"的IMDN代表為了狀 態同步需要而發送的閱讀報告;根據判斷結果,若應用服務器收到的該消息的 頭域值為"notification_sender",則進行204;若應用服務器收到的該消息的頭 域值為"notification—sync",則進行206;若是其它頭域值,則進行205;
204:若應用服務器收到的該消息的頭域值包含"notification—sender",則 該消息是接收方回復發送方的閱讀報告,于是,應用服務器將該閱讀報告轉發 給消息發送方,并將閱讀才艮告的Content-Disposition頭域值改為 "notification_sync",并分別發送給接收方收到相應消息的其它設備,以通知其 它設備的消息已讀狀態的同步;
205:若該消息的Content-Disposition頭域值為其它值,則直接轉發該消息; 206:若應用服務器收到的該消息的頭域值包含"notificatior^sync",則該 消息是為了同步而發送的閱讀報告,于是應用服務器分別向接收了相應消息的 接收方的其它設備發送該消息的閱讀報告,并可以不轉發該閱讀報告給消息發 送方;
207:判斷該消息中是否包含Disposition-Notification頭域;若該消息中包 含Disposition-Notification頭域,則進行208 ; 若該消息中不包含 Disposition-Notification頭i或,貝'J進4亍211:
208:斗全查Disposition畫Notification頭i或^i,判斷該Disposition-Notification 是否包含"read";若包含"read",則進行209;若不包含"read",則進行210;
209:若該消息的Disposition-Notification頭^/直包含"read",由于消息 的發送方若要向消息的接收方請求IMDN就需要在消息中包含 Disposition-Notification頭域,同時在Disposition-Notification頭域中指定想要的 處理通知的類型,已定義的請求閱讀報告的Disposition-Notification頭域值為 "read",應用服務器收到該消息后向接收方轉發該消息;
210:若該消息的Disposition-Notification頭i或l直不包含"read",則需要 在該消息中增加用于同步的閱讀報告請求,由于消息接收方需要能夠識別收到 的消息中請求的閱讀報告是消息發送方請求的還是應用服務器為了實現接收 方消息狀態同步而請求的,而現有機制中無法實現這種區分,因此本發明實施 例通過乂十Disposition-Notification頭i或il進4亍才廣展,土曽力口 "self-report"頭i4/f直, 來表示多設備環境下的應用服務器為了消息"已讀"狀態的同步而請求閱讀報 告,應用服務器在該消息的Disposition-Notification頭域中增加頭域值 "self-report"后,將其發送給接收方的各設備;
211:若該消息不包含Disposition-Notification頭域,則應用服務器在消息 中增力口Disposition隱Notification頭域,頭域值為"self-report",并且在該消息 中增加Message-ID頭域后,將該消息發送給接收方的至少兩個設備。
上述描述內容介紹了應用服務器實現接收方的至少兩個設備消息"已讀" 狀態同步時的處理邏輯,可以看出,本發明實施例將現有"notification"頭域值 擴展為"notification—sender"以及"notification—sync"f尤可以區分消息接收方對 消息發送方所請求的閱讀報告的回復,以及為了同步需要而發送的閱讀報告; 并且本發明實施例還通過對Disposition-Notification頭域值進行擴展,即對該頭 域增加"self-report"頭域值,來表示多設備環境下的應用服務器為了消息"已 讀"狀態的同步而請求閱讀報告,從而使消息接收方各設備能夠識別收到的消 息請求的閱讀才艮告是消息發送方請求的,還是應用服務器為了實現接收方消息 "已讀"狀態同步而請求的。
本發明實施例還提供一種消息處理方法,可以應用于包含多個接收設備的
15接收方系統中,具體包括所述多個接收設備接收應用服務器發送的包含閱讀 報告請求的消息;所述多個接收設備中的至少 一個接收設備閱讀所述消息后向 應用服務器發送閱讀報告;所述多個接收設備中的其它設備接收所述應用服務 器發送的所述消息的閱讀報告,并根據所述閱讀報告更新已接收的所述消息的 狀態。
具體的,若所述消息中包含所述消息的發送方的閱讀報告請求,閱讀所述 消息后向應用服務器發送設置了用于表示回復發送方的頭域值的閱讀報告;或 者,若所述消息中包含所述消息的發送方的閱讀報告請求,但接收方閱讀所述 消息后確定不回復閱讀報告時,構造設置了用于狀態同步的頭域值的閱讀報告 并向應用服務器發送;或者,若所述消息中包含應用服務器為了狀態同步增加 的閱讀報告請求,則閱讀所述消息后,構造設置了用于狀態同步的頭域值的閱 讀報告并向應用服務器發送。
下面結合附圖3對本發明實施例提供的可以用于包含多個接收設備的接收 方系統實現消息"已讀"狀態同步的方法流程將進^^描述。
圖3是本發明實施例的可以用于具有至少兩個設備的接收方的方法流程示 意圖,如圖3所示,相應的具體流程可以包括
31:接收應用服務器發送的包含閱讀報告請求的消息;具體的接收方的 至少兩個設備收到應用服務器發送的同 一條消息;該消息可以包含消息發送方 的閱讀報告請求或應用服務器增加的用于狀態同步的閱讀報告請求;
32:閱讀所述消息后向應用服務器發送閱讀報告;具體的,接收方的至少 兩個設備中的一個設備閱讀所述消息后,向應用服務器發送閱讀才艮告;例如
若所述消息中包含所述消息的發送方的閱讀報告請求,閱讀所述消息后向 應用服務器發送設置了用于表示回復發送方的頭域值的閱讀報告;
或者,若所述消息中包含所述消息的發送方的閱讀報告請求,但接收方閱 讀所述消息后確定不回復閱讀報告時,構造設置了用于狀態同步的頭域值的閱 讀報告并向應用服務器發送;
或者,若所述消息中包含應用服務器為了狀態同步增加的閱讀報告請求,
16則閱讀所述消息后,構造設置了用于狀態同步的頭域值的閱讀報告并向應用服
務器發送;
33:接收方收到所述消息的其它設備,收到應用服務器發送的所述消息的 閱讀報告,根據所述閱讀報告的頭域值判斷應用服務器發送的是閱讀報告后, 將該閱讀報告對應的所述消息的狀態更新為已讀;具體的,接收方收到所述消 息的其它設備接收應用服務器發送的所述消息的閱讀報告,將閱讀報告對應的 消息的識別信息與本地已接收消息的識別信息匹配,找到對應的所述消息,將 所述消息的狀態更新為已讀。
上述內容描述了接收方設備實現狀態同步時的方法流程,可以看出,本發 明實施例可以使用較少的信息流量來實現接收方至少兩個設備之間的消息"已 讀"狀態的同步,可以避免由于使用數據同步協議進行同步過程中的大量消息 交互,從而減輕系統的負擔。
下面結合附圖4對本發明實施例接收方設備的處理邏輯進行詳細描述。如 圖4所示,相應的具體處理邏輯可以包括
401:接收方的至少兩個設備收到應用服務器發送的消息;
402:接收方的設備檢查所述消息中是否包含Content-Disposition頭域,若 包含,進行403;若不包含,進行406;
403 : 檢查Content-Disposition頭域值,若頭域值包含 "notification—sender",則進4亍404; 若頭i或^直包含"notification—sync",則進4亍 405;
404:若收到的所述消息的頭域值包含"notification— sender",則這是針對 已發出消息的閱讀報告,接收方設備將所述消息的識別信息與本地已發送消息 的識別信息(例如Message-ID值)匹配,當找到對應的所述消息,將所述消息 的狀態更新為已讀,實現消息"已讀"狀態同步;
405:若收到的所述消息的頭域值包含"notification一sync",則所述消息是 應用服務器為了實現至少兩個設備之間消息"已讀"狀態同步而發送的閱讀報 告,接收方設備將所述消息的識別信息與本地已接收消息的識別信息(例如Message-ID值)匹配,當找到對應的所述消息,將所述消息的狀態更新為已讀, 實現消息"已讀"狀態同步;
406:接收方設備檢查所述消息中是否包含Disposition-Notification頭域 若包含,則進行407;
407:若戶斤述消',H々Disposition-Notification頭i或^直包含"read",貝'J進4亍 408;若,斤述消息的Disposition-NotJfication頭i或l直包含"self-report",貝'J進4亍 4";
408:所述消息的Disposition-Notification頭域值包含"read"說明該消息 的閱讀報告是消息發送方請求的若接收方通過至少兩個設備之中的一臺設備 閱讀了所述消息,并愿意向發送方回復閱讀報告,則進行409;若確定不向發 送方回復閱讀報告,則進行410;
409:若接收方通過設備閱讀了所述消息,并確定向發送方回復閱讀報告, 則構造閱讀報告,將該閱讀報告的Content-Disposition頭域值設為 "notification—sender",然后將其發送給消息發送方;
410:若接收方通過設備閱讀了所述消息,但確定不向發送方回復閱讀報 告,則仍然構造閱讀報告,并將該閱讀報告的Content-Disposition頭域值設為 "notification_sync",然后將其發送給消息發送方(實際上這個閱讀報告不會到 達消息發送方);
411:若所述消息的Disposition-Notification頭iiUi包含"self-report",則
所述消息的閱讀報告請求是應用服務器為了實現接收方至少兩個設備之間消 息"已讀"狀態的同步而發起的(即消息的發送方并沒有請求閱讀報告),當 接收方通過設備閱讀了所述消息后,根據應用服務器發起的該閱讀報告請求構 造閱讀報告,并將Content隱Disposition頭域值設為Mnotification_sync",然后將 該閱讀報告發送給應用服務器。
上述描述內容介紹了接收方的設備實現至少兩個設備消息"已讀"狀態同 步的處理邏輯,可以看出,本發明實施例中,接收方的設備收到消息后,先判 斷該消息是否是閱讀報告,若是閱讀報告則根據Content-Disposition頭域值對
18閱讀報告進行匹配,以實現同步;若該消息不是閱讀報告則根據 Disposition-Notification頭域值以及用戶的意愿構造閱讀報告來實現同步。并 且,本發明實施例將現有"notification"頭域值擴展為"notification—sender"以及 "notification一sync"就可以區分消息接收方對消息發送方所請求的閱讀報告的 回復,以及為了同步需要而發送的閱讀報告;并且本發明實施例還通過對 Disposition-Notification頭i或l直進4亍擴展,即對該頭i或增力。"self-report"頭i或 值,來表示多設備環境下的應用服務器為了消息"已讀"狀態的同步而請求閱 讀報告,從而使消息接收方各設備能夠識別收到的消息中請求的閱讀報告是消 息發送方請求的還是應用服務器為了實現接收方消息"已讀"狀態同步而請求 的。
本發明實施例中的發送方設備在收到應用服務器發送的頭域值為 "notification—sender"的閱讀才艮告后,將該閱讀才艮告中的Message隱ID元素的值 與已發消息的Message-ID值進行匹配,就能找到對應的已發消息,并將對應的 已發消息更新為已讀。
需要說明的是,實際的通信交互過程中, 一個接收方設備同時也可以是發 送方設備,因此,本發明實施例中的接收方設備也具有發送方設備的功能,即 收到應用服務器發送的頭域值為"notificatior^sender的閱讀報告后,將該閱讀 報告中的Message-ID元素的值與已發消息的Message-ID值進行匹配,就能找 到對應的已發消息,并將對應的已發消息更新為已讀。這樣,本發明實施例中 的接收方設備(同時也是發送方設備)在收到 一 個頭域值為 "notification—sender"的閱讀才艮告后,即可判斷得知該閱讀才艮文是針對已發送消 息的,然后只需在已發送消息中查找對應消息;或在收到一個頭域值為 "notification_sync'W閱讀報告后,即可判斷得知該閱讀報文是針對已接收消息 的,然后只需在已接收消息中查找對應消息,這樣就免去了由于不知道該閱讀 報告是針對已發送消息還是已接收消息的而在已發送消息和已接收消息中進 行的查找,從而減少了一半的工作量。
為便于對本發明實施例的理解,下面將結合附圖對本發明實施例的具體實
19現方案進行詳細的描述。 具體實施例一
該實施例中,在接收方設備向發送方回復閱讀報告的情況下,實現接收方 至少兩個設備之間消息"已讀"狀態的同步。
若消息發送方發送的消息中包含了閱讀報告請求,例如發送的該消息中
包含了頭域值為"read"的Disposition-Notification頭域,當接收方在多個接收 了該消息的設備中的一個設備上閱讀了該消息后,該設備根據發送方的閱讀報 告請求構造閱讀報告,并將Content-Disposition頭域值設為 "notification_sender",然后向消息發送方發送該閱讀報告。該閱讀報告首先到 達消息接收方(即閱讀報告的發送方)的應用服務器,應用服務器檢查該閱讀 才艮告的Content-Disposition頭i或,發J見頭i或《直包含"notification—sender", #尤^口 道該閱讀報告是消息接收方根據發送方的閱讀報告請求回復的閱讀報告,于是 將該閱讀報告轉發給消息發送方,然后為了使消息接收方的接收了同一條消息 的其它設備也將該消息的狀態同步為"已讀",應用服務器將該閱讀報告中的 Content隱Disposition頭i或i"直"notification—sender"改為"notification—sync",并分 別發送給接收方接收了同一條消息的其它設備。
消息發送方設備收到閱讀報告后,檢查Content-Disposition頭域,發現頭 域值包含"notification—sync ",就將該將閱讀氺艮告中的〈message-id〉元素的值 與已發送消息的Message-ID的值進行匹配,就可以找到對應的消息,然后將 對應的消息的狀態更新為已讀。
消息接收方接收了同一條消息的其它設備收到應用服務器修改了頭域值 的閱讀報告后,檢查Content-Disposition頭域,發現頭域值包含 "notification_sync",就知道這是針對已接收消息的狀態同步的閱讀報告,于是 3爭閱讀才艮告中的〈message-ic^元素的值與已4妻》|丈消息的Message-ID的<直進 4亍匹配,就能找到對應的消息,將對應的消息的狀態更新為已讀,實現消息狀 態的同步。
下面將結合圖5,對本實施例的應用過程進4亍詳細說明。圖5中,用戶Ai殳
20備為消息發送方設備,用戶B為消息接收方并且有2個接收設備,分別為設備1 和設備2;圖中的應用服務器是用戶B的應用服務器。如圖5所示,具體的處理 可以包4舌
(1 )用戶A向用戶B發送消息,該消息中包含閱讀報告請求,例如具體的, 可以在消息中包含Disposition-Notification頭域并且頭域值包含"read";該消 息到達為用戶B服務的應用服務器后,應用服務器檢查該消息中的 Disposition-Notification頭i或,發i見Disposition-Notification頭i或^直包含"read", 則不對該頭域修改,同時應用服務器對本地數據庫進行查詢,發現用戶B有兩 個設備可以接收該消息;
(2 )應用服務器轉發該包含發送方閱讀報告請求的消息給用戶B的設備1;
(3 )應用服務器轉發該包含發送方閱讀報告請求的消息給用戶B的設備2;
(4)用戶B通過設備1閱讀了應用服務器轉發的上述消息,并且愿意向用 戶A回復消息閱讀報告,設備1就根據發送方的閱讀報告請求構造閱讀報告,并 在該閱讀才艮告的Content-Disposition頭域中包含值"notification—sender",然后 向用戶A發送,該閱讀報告首先到達用戶B的應用服務器;
(5 )應用服務器檢查Content-Disposition頭域,發現頭域值包含 "notification—sender",于是向用戶A轉發該閱讀報告;用戶A收到閱讀報告后, ^r查Content隱Disposition頭i或,發王見頭i或^f直包含"notification—sender", f尤3奪該 4奪閱讀才艮告中的〈message-id〉元素的^直與已發消息的Message-ID的值進4亍 匹配,就可以找到對應的消息,并將對應的消息的狀態更新為已讀。
(6 )應用服務器將閱讀報告中的Content-Disposition頭域值 "notification—sender"改為"notification—sync"后,發送給用戶B的i殳備2, i殳備2 收到閱讀報告后,檢查Content-Disposition頭域,發現頭域值包含 "notification—sync",將閱讀才艮告中的〈message-id〉元素的值與已4妾收消息的 Message-ID的值進4亍匹配,就可以找到對應的消息,將對應的消息的狀態更 新為已讀,實現消息"已讀"狀態的同步。
由上述描述可知,應用服務器收到接收方收到同一條消息的至少兩個設備中的一個設備回復發送方的閱讀報告后,將該閱讀報告轉發給消息發送方,同
時通過將該閱讀才艮告中的Content-Disposition頭域值"notification—sender"改為 "notification—sync",并分別發送給接收方接收了同一條消息的其它設備,可以 實現接收方至少兩個收到同一條消息的設備的消息"已讀"狀態同步。從而使 用較少的信息流量來實現接收方至少兩個設備之間的消息"已讀"狀態同步, 可以避免由于使用數據同步協議進行同步過程中的大量消息交互,減輕了整個 系統的負擔。
具體實施例二
該實施例中,在接收方確定不回復閱讀報告的情況下,實現接收方至少兩 個設備之間消息"已讀"狀態的同步。
若消息發送方發送的消息中包含了閱讀報告請求,例如發送的消息中包含 了值為"read"的Disposition-Notification頭域,接收方設備收到該消息,接收 方通過至少兩個收到該消息的設備中的一個設備閱讀該消息后,卻確定不發送 該消息的閱讀報告。為了實現接收方其它設備上消息狀態的同步,接收方閱讀 所述消息的設備仍然構造閱讀報告,并在該閱讀報告的Content-Disposition頭 域中包含值"notificatior^sync",然后發送給消息發送方(實際上這個閱讀報告 不會到達消息發送方)。
該閱讀報告首先到達消息接收方(即閱讀報告的發送方)的應用服務器, 應用服務器檢查其Content-Disposition頭域,發現頭域值包含 "notification—sync",就分別向接收方接收了消息的其它設備發送該該消息的閱 讀報告,但不轉發該閱讀報告給消息發送方。
消息接收方的其它設備收到閱讀報告后,檢查Content-Disposition頭域, 發現頭域值包含"notification—sync",于是將閱讀才艮告中的〈message國id〉元素 的值與已接收消息的Message-ID的值進行匹配,就可以找到對應的消息,將對 應的消息的狀態更新為已讀,實現消息"已讀"狀態的同步。
下面將結合圖6,對本實施例的應用過程進行詳細說明。圖6中,用戶A設 備為消息發送方設備,用戶B為消息接收方并且有2個接收設備,分別為設備1
22和設備2;圖中的應用服務器是用戶B的應用服務器。如圖6所示,具體的處理 可以包括
(1 )用戶A向用戶B發送消息,發送的消息中包含了閱讀報告請求,例如 消息中包含Disposition-Notification頭域并且頭域值包含"read";該消息到達 為用戶B服務的應用服務器后,應用月l務器檢查消息中的 Disposition-Notification頭i或,發3E見Disposition-Notification頭i或^直包含"read",
則不對該消息加以修改,同時應用服務器對本地數據庫進行查詢,發現用戶B 有兩個設備可以接收該入消息;
(2) 應用服務器轉發該消息給用戶B的設備1;
(3) 應用服務器轉發該消息給用戶B的設備2;
(4) 用戶B通過設備1閱讀了應用服務器轉發的上述消息,發現 Disposition-Notification頭域值包含"read",即用戶A請求了消息閱讀才艮告,但 用戶B確定不向用戶A回復消息閱讀報告,于是設備1構造閱讀報告,并使該閱 讀才艮告的Content-Disposition頭域^i包含"notification—sync",然后將該閱讀才艮 告發送給用戶A(實際上該閱讀報告不會到達用戶A),該消息閱讀報告首先到 達用戶B的應用服務器;
(5 )應用服務器檢查Content-Disposition頭域,發現頭域值包含 "notification—sync",于是應用服務器不向用戶A轉發該閱讀報告,但發送閱讀 報告給用戶B的設備2;設備2收到閱讀報告后,檢查Content-Disposition頭域, 發現頭域值包含"notification—sync",于是將閱讀才艮告中的〈message-id〉元素 的值與已接收消息的Message-ID的值進行匹配,就可以找到對應的消息,并 將對應的消息的狀態更新為已讀,實現消息"已讀"狀態的同步。
由上述描述可知,在接收方確定不回復閱讀報告的情況下,接收方設備可 以在接收方閱讀所述消息后,回復Content-Disposition頭域值為 "notification一sync"的閱讀報告,應用服務器將該消息的閱讀報告發送給接收方 的其它設備,就可以實現使用較少的信息流量來實現接收方至少兩個設備之間 的消息"已讀"狀態同步,避免了由于使用數據同步協議進行同步過程中的大
23量消息交互,從而減輕了整個系統的負擔。 具體實施例三
該實施例中,在發送方發送的消息中未包含閱讀報告請求的情況下,實現 接收方至少兩個設備之間消息"已讀"狀態的同步。
若發送方在發送的消息中沒有請求閱讀報告,則為了實現接收方各設備上 消息已讀狀態的同步,應用服務器就可以在轉發消息給接收方各設備之前,在
該消息中增加閱讀才艮告請求,例如,可以給該消息增力pDisposition-Notification 頭域值"self-report",具體的,若該消息中已經有Disposition-Notification頭 域,則對該頭域增加頭域值"self-report "; 若該消息中不含 DisposJtion-Notification頭域,則在消息中增力pDisposition-Notification頭域,并 i殳頭域值為"self-report",同時在消息中增加Message-ID頭域,然后再將消 息發送到接收方的至少兩個設備。
當接收方的至少兩個i殳備收到應用服務器增加了閱讀凈艮告請求的消息時, 才艮才居Disposition-Notification頭i或^i包含的"self-report",才尤可以i口、另'J出只寸該 消息的閱讀報告請求是應用服務器為實現接收方多設備之間消息"已讀"狀態 的同步而發起的,而發送方并沒有請求閱讀報告。當接收方在其中一臺設備上 閱讀了該消息時,該接收方設備構造閱讀報告,并在該閱讀報告中增加 Content-Disposition頭域值"notification—sync",然后將其發送纟合消息發送方(實 際上這個閱讀報告不會到達消息發送方)。
該閱讀報告首先到達消息接收方(即閱讀報告的發送方)的應用服務器, 應用服務器檢查其Content-Disposition頭域,發現頭域值包含 "notification—sync",就不將該閱讀l艮告轉發纟合消息發送方,而分別向4妻收方才妻 收了對應的消息的其它設備發送該消息的閱讀報告。
消息接收方的其它設備收到閱讀報告后,檢查Content-Disposition頭域, 發現頭域值包含"notification—sync",將閱讀!艮告中的〈message畫id〉元素的值 與已接收消息的Message-ID的值進行匹配,就可以找到對應的消息,并將對 應的消息的狀態更新為已讀,實現消息"已讀"狀態的同步。
24下面將結合圖7,對本實施例的應用過程進行詳細說明。圖7中,用戶A設 備為消息發送方設備,用戶B為消息接收方并且有2個接收設備,分別為設備1 和設備2;圖中的應用服務器是用戶B的應用服務器。如圖7所示,具體的處理 可以包括
(1 )用戶A向用戶B發送消息,消息中未包含閱讀報告請求;該消息到達 用戶B的應用服務器后,應用服務器檢查該消息中的Disposition-Notification頭 域,若Disposition-Notification頭域值不包含"read",則對該頭域增加頭域值 "self-report"; 若該消息中不含Disposition-Notification頭域,則在該消息中 增力口Disposition-Notification頭域,頭域i"直為"self-report", 并在該消息中增 加Message-ID頭域,同時應用服務器對本地數據庫進行查詢,發現用戶B有兩 個設備可以接收該消息;
(2) 應用服務器轉發該消息給用戶B的設備1;
(3) 應用服務器轉發該消息給用戶B的設備2;
(4) 用戶B通過設備1閱讀了該消息,發現Disposition-Notification頭域值 包含"self-report",即知道用戶A沒有請求消息閱讀報告,但用戶B需要向應用 服務器提供消息"已讀"狀態同步的信息,于是構造閱讀報告,并使該閱讀報 告中包含Content-Disposition頭域值"notification—sync",然后將其發送給用戶 A(實際上該閱讀報告不會到達用戶A),消息閱讀報告首先到達用戶B的應用 服務器;
(5) 應用服務器檢查該閱讀報告的Content-Disposition頭域,發現頭域值 包含"notification—sync",即知道不需向用戶A轉發該閱讀報告,于是只轉發給 用戶B的設備2;設備2收到該閱讀報告后,檢查Content-Disposition頭域,發 現頭域值包含"notification—sync",于是將閱讀報告中的〈message畫id〉元素的 值與已接收消息的Message-ID的值進行匹配,就可以找到對應的消息,并將 對應的消息的狀態更新為已讀,實現消息狀態的同步。
由上述描述可知,在發送方發送的消息中未包含閱讀報告請求的情況下, 應用服務器可以在發送該消息給接收方各設備之前,在該消息中增加閱讀報告i青求,例如,可以纟合該消息增力口Disposition-Notification頭i或4直"self-report";
接收方設備在接收方閱讀所述增加了閱讀報告請求的消息后,回復 Content-Disposition頭域值為"notification—sync"的閱讀報告,應用服務器再將 該閱讀報告轉發給接收方的其它設備,就可以實現使用較少的信息流量來實現 接收方至少兩個設備之間的消息"已讀"狀態同步,避免了由于使用數據同步 協議進行同步過程中的大量消息交互,從而減輕了整個系統的負擔。
本發明實施例還提供了一種實現已讀狀態同步的應用服務器,其結構如圖 8所示,具體實現結構可以包括
第一接收單元81,用于接收發送方發送的消息;包括閱讀報告和發送給接 收方的消息;
第一檢測單元82,用于檢測所述第一接收單元81接收的所述發送方發送的 消息是閱讀報告,還是其它消息;以及所述消息中是否包含發送方的閱讀報告 請求;
第一處理單元83,用于根據所述第一檢測單元82的檢測結果,在沒有包含 發送方的閱讀報告請求的消息中增加用于狀態同步的閱讀報告請求;并將包含 所述閱讀報告請求的消息傳遞給第一發送單元84;例如,增加用于狀態同步的 閱讀報告請求時,可以給消息增加Disposition-Notification頭域值"self-report", 具體的,若該消息中已經有Disposition-Notification頭域,則對該頭域增加頭域 值"self-report"; 若該消息中不含Disposition-Notification頭域,則在消息中 增力口Disposition-Notification頭域,并i殳頭i或i!i為"self-report", 并在該消息 中增加Message-ID頭域;對已包含發送方的閱讀報告請求的消息不再增加用于 狀態同步的閱讀報告請求;
第一發送單元84,用于根據第一處理單元的處理結果,向接收方的各設備 發送包含閱讀報告請求的消息;
第二接收單元85,用于接收接收方的設備發送的閱讀報告;所述設備是接 收方的收到包含閱讀報告請求的消息的至少兩個設備中閱讀該消息的設備;所 述閱讀報告是閱讀該消息的設備根據該消息中的所述閱讀報告請求發送的閱
26讀報告;
判斷單元86,用于根據消息的頭域值判斷所述第二接收單元85接收到的消 息是閱讀報告;并根據所述閱讀報告的頭域值判斷所述閱讀報告的類型;并將 判斷結果傳遞給所述第二發送單元;所述閱讀報告的類型包括回復發送方的閱 讀報告和用于狀態同步的閱讀報告;具體的,若該閱讀報告中包含了用于表示 回復發送方的頭域值,例如Content-Disposition的頭域值包含 "notification—sender",則判斷該閱讀報告是所述接收方閱讀消息的設備根據該 消息中包含的所述發送方的閱讀報告請求回復的閱讀報告;若該閱讀報告中包 含了用于狀態同步的頭域值,例如Content-Disposition的頭域值包含 "notification—sync",則判斷該閱讀報告是所述接收方閱讀消息的設備根據該消 息中包含的所述發送方的閱讀報告請求,或是所述接收方閱讀消息的設備根據 所述消息中增加的用于狀態同步的閱讀報告請求,而構造的用于狀態同步的閱 讀報告;
第二發送單元87,在所述第二接收單元85接收了接收方的設備根據所述消 息包含的所述閱讀報告請求發送的閱讀報告后,向所述接收方的設備中發送所
據所述閱讀報告更新所述消息的狀態;例如,根據判斷單元86判斷閱讀報告的 類型是回復發送方的閱讀報告時,將閱讀報告中的Content-Disposition頭域值 "notification—sender" 文為"notification—sync",并分別發送纟合才妄)|欠方才妄》]欠了同一 條消息的其它設備;
第三發送單元88,用于當所述判斷單元86判斷所述閱讀報告的類型是回復 發送方的閱讀報告時,向所述發送方發送該閱讀報告。
本發明實施例還提供一種實現狀態同步的接收方設備,其結構如圖9所示, 具體實現結構可以包括
接收單元91,用于接收應用服務器發送的包含閱讀報告請求的消息;還用 于接收所述應用服務器發送的所述消息的閱讀報告;
閱讀處理單元92,用于閱讀所述接收單元接收的所述消息;在閱讀所述消
27息后向所述應用服務器發送閱讀報告;具體包括
判斷單元921,用于根據所述消息的頭域值判斷所述消息中包含的閱讀報 告請求是發送方的閱讀報告請求,還是應用服務器為了狀態同步增加的閱讀報 告請求;例如,判斷在消息中是否包含Disposition-Notification頭域,并且頭域 值為"read",或者該消息中是否包含Disposition-Notification頭域,并且頭域 值為"self-report";還用于根據所述閱讀報告的頭域值判斷所述接收單元接 收的所述閱讀報告是否是所述消息的閱讀報告;即該閱讀報告是針對已發送消 息的還是針對已接收消息的;例如,根據消息的頭域值判斷所述消息的頭域值 是否包括頭域值"notification—sync";并將判斷結果傳遞給同步單元93;
閱讀單元922,用于閱讀所述消息;并在所述判斷單元判斷所述消息中包 含發送方的閱讀報告請求時,根據該閱讀報告請求,發送設置了用于表示回復 發送方的頭域值的閱讀報告給所述應用服務器;例如,在該閱讀報告的 Content-Disposition頭域中設置值"notification—sender",然后發送給應用服務 器;或者,判斷所述消息中包含發送方的閱讀報告請求,但接收方確定不回復
服務器;例如,使該閱讀報告的Content-Disposition頭域值包含 "notification—sync",然后將其發送給應用服務器;或者,判斷所述消息中包含 所述增加的用于狀態同步的閱讀報告請求,則根據該閱讀報告請求,構造設置
讀報告中的Content-Disposition頭域值包含"notification—sync",然后將其發送 給應用服務器;
同步單元93,用于根據應用服務器發送的所述消息的所述閱讀報告,更新 所述消息的狀態;具體的,可以根據判斷單元921判斷消息是應用服務器發送 的所述消息的所述閱讀報告的結果,更新所述消息的狀態;所述同步單元93包 括
識別單元931 ,用于將所述閱讀報告對應的消息的識別信息與本地已接收 消息的識別信息匹配,找到對應的所述消息;
28更新單元932,用于將對應的所述消息的狀態更新為已讀。
本發明實施例還提供一種實現狀態同步的系統,其結構如圖10所示,包括 應用服務器和接收方設備;所述接收方設備,包括至少一個接收方第一設備, 以及至少 一個接收方第二設備;
應用服務器101,用于收到發送方發送的消息后,向所述接收方設備發送 包含閱讀報告請求的消息;接收接收方第一設備102發送的閱讀所述消息的閱 讀報告后,向接收方第二設備103發送所述消息的閱讀報告;該系統中的應用 服務器包括的單元與上述應用服務器包括的單元相同,這里不再贅述;
接收方第一設備102,用于接收應用服務器101發送的消息,并在閱讀所述 消息后向所述應用服務器發送閱讀報告;該系統中的接收方第 一設備102包括 的單元與上述接收方設備包括的單元相同,這里不再贅述;
接收方第二設備103,用于接收應用服務器發送的消息,以及接收所述應 用服務器發送的所述消息的所述閱讀報告,并根據應用服務器發送的所述閱讀 報告更新所述消息的狀態;該系統中的接收方第二設備103包括的單元與上述 接收方設備包括的單元相同,這里不再贅述。
本發明實施例中的實現狀態同步的設備、單元可以設置于終端設備中,或 者,也可以設置在網絡側設備中。
綜上所述,本發明各實施例和現有技術中相比,本發明實施例通過對現有 機制擴展,就可以實現使用較少的信息流量來實現接收方各設備之間的消息 "已讀"狀態同步,避免了由于使用數據同步協議進行同步過程中的大量消息 交互,從而減輕了整個系統的負擔。
以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護范圍并不局 限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易 想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護 范圍應該以權利要求的保護范圍為準。
29
權利要求
1、一種實現已讀狀態同步的方法,其特征在于,包括收到發送方發送的消息后,向接收方的各設備發送包含閱讀報告請求的消息;收到所述接收方的設備發送的閱讀報告,該設備是收到包含所述閱讀報告請求的消息的至少兩個設備中閱讀該消息的設備,所述閱讀報告是閱讀該消息的設備根據該消息中的所述閱讀報告請求發送的閱讀報告;向所述接收方的設備中發送所述閱讀報告的設備之外的其它設備發送用于同步的閱讀報告,通知所述其它設備根據該閱讀報告更新所述消息的狀態。
2、 根據權利要求1所述的方法,其特征在于,所述向接收方的各設備發送包含閱讀報告請求的消息,包括若收到的發送方發送的消息中沒有包含發送方的閱讀報告請求,則在該消息中增加用于狀態同步的閱讀報告請求后,發送給接收方的各設備;若包含發送方的閱讀報告請求,則將該消息直接發送給接收方的各設備。
3、 根據權利要求2所述的方法,其特征在于,所述向所述接收方的設備中其它設備根據該閱讀報告更新所述消息的狀態,包括告類型,并根據判斷結果進行發送;具體包括若該閱讀報告中包含了用于表示回復發送方的頭域值,則判斷該閱讀報告是所述接收方閱讀消息的設備根據該消息中包含的所述發送方的閱讀報告請求回復的閱讀報告;則向所述接收方的所述其它設備發送用于同步的閱讀報告.若該閱讀報告中包含了用于狀態同步的頭域值,則判斷該閱讀報告是所述接收方閱讀消息的設備根據該消息中包含的所述發送方的閱讀報告請求,或是所述接收方閱讀消息的設備根據所述消息中增加的用于狀態同步的閱讀報告請求,而構造的用于狀態同步的閱讀報告;則向所述接收方的所述其它設備發送用于同步的閱讀報告。
4、 根據權利要求3所述的方法,其特征在于,所述判斷該閱讀報告是所述接收方閱讀消息的設備根據該消息中包含的所述發送方的閱讀報告請求回復的閱讀報告時,還向所述發送方發送該閱讀報告。
5、 根據權利要求1或2或3所述的方法,其特征在于,所述方法還包括所述其它設備收到所述用于同步的閱讀報告后,將該閱讀報告對應的消息的識別信息與本地已接收消息的識別信息匹配,找到對應的消息,將該對應的消息的狀態更新為已讀。
6、 根據權利要求3所述的方法,其特征在于,所述方法還包括收到消息后根據所述頭域值判斷收到的所述消息是閱讀報告。
7、 一種實現已讀狀態同步的應用服務器,其特征在于,包括第一接收單元,用于接收發送方發送的消息;第一發送單元,用于向接收方的各設備發送包含閱讀報告請求的消息;第二接收單元,用于接收接收方的設備發送的閱讀報告,所述設備是接收方的收到包含閱讀報告請求的消息的至少兩個設備中閱讀該消息的設備;所述閱讀報告是閱讀該消息的設備根據該消息中的所述閱讀報告請求發送的閱讀報告;第二發送單元,在所述第二接收單元接收了接收方的設備根據所述消息包含的所述閱讀報告請求發送的閱讀報告后,向所述接收方的設備中發送所述閱讀報告的設備之外的其它設備發送用于同步的閱讀報告,通知其它設備根據所述用于同步的閱讀報告更新所述消息的狀態。
8、 根據權利要求7所述的應用服務器,其特征在于,所述應用服務器,還包括第一檢測單元,用于檢測所述第一接收單元接收的所述發送方發送的消息中,是否包含發送方的閱讀報告請求;第一處理單元,用于根據所述第一檢測單元的檢測結果,在沒有包含發送方的閱讀報告請求的消息中增加用于狀態同步的閱讀報告請求;并將包含所述閱讀報告請求的消息傳遞給所述第 一發送單元。
9、 根據權利要求7所述的應用服務器,其特征在于,所述應用服務器,還包括判斷單元,用于根據所述第二接收單元接收到的消息的頭域值判斷該消息是閱讀報告;并根據所述閱讀報告的頭域值判斷所述閱讀報告的類型;并將判斷結果傳遞給所述第二發送單元;所述閱讀報告的類型包括回復發送方的閱讀報告和用于狀態同步的閱讀報告;第三發送單元,用于當所述判斷單元判斷所述閱讀報告的類型是回復發送方的閱讀報告時,向所述發送方發送該閱讀報告。
10、 一種消息處理方法,應用于包含多個接收設備的接收方系統中,其特征在于,包括所述多個接收設備接收應用服務器發送的包含閱讀報告請求的消息;所述多個接收設備中的至少一個接收設備閱讀所述消息后向應用服務器發送閱讀報告;所述多個接收設備中的發送所述閱讀報告的設備之外的其它設備接收所述應用服務器發送的所述消息的閱讀報告,并根據所述閱讀報告更新已接收的所述消息的狀態。
11、 根據權利要求10所迷的方法,其特征在于,所述閱讀所述消息后向應用服務器發送閱讀報告,具體包括若所述消息中包含所述消息的發送方的閱讀報告請求,閱讀所述消息后向應用服務器發送設置了用于表示回復發送方的頭域值的閱讀報告; 或者,若所述消息中包含所述消息的發送方的閱讀報告請求,但接收方閱讀所述消息后確定不回復閱讀報告時,構造設置了用于狀態同步的頭域值的閱讀報告并向應用服務器發送;或者,若所述消息中包含應用服務器為了狀態同步增加的閱讀報告請求,則閱讀所述消息后,構造設置了用于狀態同步的頭域值的閱讀報告并向應用服務器發送。
12、 根據權利要求10所述的方法,其特征在于,所述根據所述閱讀報告更新已接收的所述消息的狀態,包括將所述閱讀報告對應的消息的識別信息與本地已接收消息的識別信息匹配,找到對應的所述消息,將所述消息的狀態更新為已讀。
13、 一種實現已讀狀態同步的接收方設備,其特征在于,所述接收方設備包括接收單元,用于接收應用服務器發送的包含閱讀報告請求的消息;閱讀處理單元,用于閱讀所述接收單元接收的所述消息;在閱讀所述消息后向所述應用服務器發送閱讀報告;所述接收單元,還用于接收所述應用服務器發送的所述消息的閱讀報告;同步單元,用于根據應用服務器發送的所述消息的所述閱讀報告更新所述消息的狀態。
14、 根據權利要求13所述的接收方設備,其特征在于,所述閱讀處理單元,包括判斷單元,用于根據所述消息的頭域值判斷所述消息中包含的閱讀報告請求是發送方的閱讀報告請求,還是應用服務器為了狀態同步增加的閱讀報告請求;閱讀單元,用于閱讀所述消息;并在所述判斷單元判斷所述消息中包含發送方的閱讀報告請求時,根據該閱讀報告請求,發送設置了用于表示回復發送方的頭域值的閱讀報告給所述應用服務器;或者,判斷所述消息中包含發送方的閱讀報告請求,但接收方確定不回復閱讀報告時,構造設置了用于狀態同步的頭域值的閱讀報告并發送給所述應用服務器;或者,判斷所述消息中包含所述增加的用于狀態同步的閱讀報告請求,則根據該閱讀報告請求,構造設置了
15、 根據權利要求13所述的接收方設備,其特征在于,所述同步單元包括識別單元,用于將所述閱讀報告對應的消息的識別信息與本地已接收消息的識別信息匹配,找到對應的所述消息;更新單元,用于將對應的所迷消息的狀態更新為已讀。
16、 一種實現已讀狀態同步的系統,其特征在于,包括應用服務器和接收方設備;所述接收方設備,包括至少一個接收方第一設備,以及至少一個接收方第二設備;應用服務器,用于收到發送方發送的消息后,向所述接收方設備發送包含閱讀報告請求的消息;接收方第一設備,用于接收應用服務器發送的消息,并在閱讀所述消息后向所述應用服務器發送閱讀報告;其中,所述應用服務器,接收所述接收方第一設備發送的閱讀所述消息的閱讀報告后,向所述接收方第二設備發送所述消息的閱讀報告;接收方第二設備,用于接收應用服務器發送的消息,以及接收所述應用服務器發送的所述消息的所述閱讀報告,并根據應用服務器發送的所述閱讀報告更新已接收的所述消息的狀態。
全文摘要
一種實現已讀狀態同步的方法及設備,方法具體包括收到發送方發送的消息后,向接收方的各設備發送包含閱讀報告請求的消息;收到所述接收方的設備發送的閱讀報告,該設備是收到包含所述閱讀報告請求的消息的至少兩個設備中閱讀該消息的設備,所述閱讀報告是閱讀該消息的設備根據該消息中的所述閱讀報告請求發送的閱讀報告;向所述接收方的設備中發送所述閱讀報告的設備之外的其它設備發送用于同步的閱讀報告,通知所述其它設備根據該閱讀報告更新所述消息的狀態。本發明實施例可以使用較少的信息流量來實現接收方至少兩個設備之間的消息“已讀”狀態同步,可以避免由于使用數據同步協議進行同步過程中的大量消息交互,從而減輕整個系統的負擔。
文檔編號H04L29/06GK101686141SQ20081022327
公開日2010年3月31日 申請日期2008年9月28日 優先權日2008年9月28日
發明者盧美蓮, 孫成振, 王立才, 韓傳葉 申請人:華為技術有限公司;北京郵電大學