本發(fā)明涉及通訊
技術(shù)領(lǐng)域:
,具體涉及一種即時消息閱讀狀態(tài)的記錄方法及裝置。
背景技術(shù):
:即時通訊(Instantmessaging,簡稱IM)是一個終端服務(wù),允許兩人或多人使用網(wǎng)路即時的傳遞文字訊息、檔案、語音與視頻交流。即時通訊不同于e-mail,在于它的交談是即時的,例如常用的QQ、YY語音、飛信等。在使用這些即時通訊應(yīng)用進(jìn)行通訊時,信息發(fā)送方需要了解信息接收方是否已閱讀過信息,以防止重要信息被遺漏。現(xiàn)有技術(shù)中即時消息閱讀狀態(tài)的記錄方法主要分為以下兩類:方法1、客戶端記錄方式。信息的每一個接收方閱讀完消息后,通過服務(wù)端中轉(zhuǎn),通知信息發(fā)送方,此時發(fā)送方客戶端在本地設(shè)備中增加記錄,標(biāo)識信息被誰閱讀;方法2、服務(wù)端記錄方式。信息的每一個接收方閱讀完信息后,通知服務(wù)端,此時服務(wù)端向數(shù)據(jù)庫中插入一條記錄,標(biāo)識該條信息被誰閱讀過。在實現(xiàn)本發(fā)明實施例過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:方法1的缺陷:客戶端重裝后,所有已讀和未讀信息將被清除;不同設(shè)備同一賬戶的已讀和未讀信息均不完整。方法2的缺陷:信息接收人數(shù)非常多的時候,例如群聊天時,每條信息的接收人數(shù)可能幾十甚至上千。每個人的閱讀信息都向數(shù)據(jù)庫中插入一條記錄,一條記錄至少需要存儲一個閱讀人員的用戶標(biāo)識和信息標(biāo)識組成的記錄元素{“user_id”:int64,“message_id”:int64},至少為16字節(jié),隨著接收人數(shù)的增多,將給數(shù)據(jù)庫帶來巨大的數(shù)據(jù)寫入壓力及信息存儲壓力。技術(shù)實現(xiàn)要素:鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的即時消息閱讀狀態(tài)的記錄裝置和相應(yīng)的即時消息閱讀狀態(tài)的記錄方法。根據(jù)本發(fā)明的一個方面,提供了一種即時消息閱讀狀態(tài)的記錄方法,包括:接收發(fā)送端向接收端發(fā)送的消息,為消息生成消息標(biāo)識;根據(jù)接收端的記錄生成第一位圖數(shù)據(jù),存儲消息標(biāo)識與第一位圖數(shù)據(jù);將消息發(fā)送給接收端;接收接收端返回的消息閱讀通知,根據(jù)消息閱讀通知對第一位圖數(shù)據(jù)進(jìn)行修改,得到第二位圖數(shù)據(jù);根據(jù)第二位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。根據(jù)本發(fā)明的另一方面,提供了一種即時消息閱讀狀態(tài)的記錄裝置,包括:接收模塊,用于接收發(fā)送端向接收端發(fā)送的消息,為消息生成消息標(biāo)識;存儲模塊,用于根據(jù)接收端的記錄生成第一位圖數(shù)據(jù),存儲消息標(biāo)識與第一位圖數(shù)據(jù);發(fā)送模塊,用于將消息發(fā)送給接收端;修改模塊,用于接收接收端返回的消息閱讀通知,根據(jù)消息閱讀通知對第一位圖數(shù)據(jù)進(jìn)行修改,得到第二位圖數(shù)據(jù);返回模塊,用于根據(jù)第二位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。根據(jù)本發(fā)明的即時消息閱讀狀態(tài)的記錄方法及裝置,在接收到發(fā)送端發(fā)送的消息之后,根據(jù)接收端的記錄生成第一位圖數(shù)據(jù);在接收到接收端返回的消息閱讀通知之后,根據(jù)消息閱讀通知修改第一位圖數(shù)據(jù)得到第二位圖數(shù)據(jù),第二位圖數(shù)據(jù)記錄了即時消息的閱讀狀態(tài),以便向發(fā)送端返回消息的閱讀狀態(tài)。本發(fā)明利用位圖記錄每個接收端的閱讀狀態(tài),將每個接收端的閱讀狀態(tài)的記錄壓縮為1bit,與現(xiàn)有技術(shù)至少占用16字節(jié)的一條記錄相比,大大節(jié)省了數(shù)據(jù)存儲空間,由此解決了給數(shù)據(jù)庫帶來巨大的數(shù)據(jù)寫入壓力及信息存儲壓力的問題。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式。附圖說明通過閱讀下文優(yōu)選實施方式的詳細(xì)描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中:圖1示出了根據(jù)本發(fā)明一個實施例的即時消息閱讀狀態(tài)的記錄方法的流程圖;圖2示出了根據(jù)本發(fā)明另一個實施例的即時消息閱讀狀態(tài)的記錄方法的流程圖;圖3示出了根據(jù)本發(fā)明一個實施例的即時消息閱讀狀態(tài)的記錄裝置的功能框圖;圖4示出了根據(jù)本發(fā)明另一個實施例的即時消息閱讀狀態(tài)的記錄裝置的功能框圖。具體實施方式下面將參照附圖更詳細(xì)地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應(yīng)當(dāng)理解,可以以各種形式實現(xiàn)本公開而不應(yīng)被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。圖1示出了根據(jù)本發(fā)明一個實施例的即時消息閱讀狀態(tài)的記錄方法的流程圖。如圖1所示,本方法包括以下步驟:步驟S101,接收發(fā)送端向接收端發(fā)送的消息,為消息生成消息標(biāo)識。每次發(fā)送端在發(fā)送消息時,會將發(fā)送端信息、消息數(shù)據(jù)、接收端信息等數(shù)據(jù)發(fā)送給服務(wù)端,以便于服務(wù)端查詢相關(guān)數(shù)據(jù)并進(jìn)行即時消息的轉(zhuǎn)發(fā)。服務(wù)端在接收到發(fā)送端信息、消息數(shù)據(jù)、接收端信息等數(shù)據(jù)后,都會新生成一條信息記錄,每條信息記錄都有唯一對應(yīng)的message_id值,即消息標(biāo)識,并將該消息標(biāo)識返回給發(fā)送端,用于發(fā)送端獲取閱讀狀態(tài)的依據(jù),同時,該消息標(biāo)識也能用于數(shù)據(jù)表的相關(guān)數(shù)據(jù)查詢。步驟S102,根據(jù)接收端的記錄生成第一位圖數(shù)據(jù),存儲消息標(biāo)識與第一位圖數(shù)據(jù)。其中,接收端的記錄記錄有接收端的接收者情況,第一位圖數(shù)據(jù)是和消息標(biāo)識對應(yīng)的,每一個消息標(biāo)識都會有一個唯一與之對應(yīng)的第一位圖數(shù)據(jù)。具體地,當(dāng)接收端為一個接收者時,即一對一形式的私人通訊模式,該情況下,接收者是用戶指定選擇的,所以接收端的記錄記錄了該一個接收者的數(shù)據(jù),根據(jù)此記錄,服務(wù)端生成的第一位圖數(shù)據(jù)為0x1;當(dāng)接收端包含多個接收者時,即一對多形式的通訊模式,該情況下,接收端的記錄中每一條記錄記錄有一個接收者的數(shù)據(jù),比如接收者對應(yīng)的序列號。在生成第一位圖數(shù)據(jù)時,將第一位圖數(shù)據(jù)對應(yīng)接收者的成員序列號的位置為1,表示該位置有成員存在。以接收端包含5名接收者為例,5名接收者的記錄中的成員序列號分別為1、2、3、4、5,則第一位圖數(shù)據(jù)的1至5為均置1,所以生成的第一位圖數(shù)據(jù)為0x1F。將消息標(biāo)識和與之對應(yīng)的第一位圖數(shù)據(jù)插入到服務(wù)端的數(shù)據(jù)庫中。步驟S103,將消息發(fā)送給接收端。服務(wù)端向接收端的所有接收者發(fā)送攜帶消息數(shù)據(jù)和消息標(biāo)識等信息的消息。步驟S104,接收接收端返回的消息閱讀通知,根據(jù)消息閱讀通知對第一位圖數(shù)據(jù)進(jìn)行修改,得到第二位圖數(shù)據(jù)。接收端接收到服務(wù)端發(fā)送的消息后,如果對應(yīng)的成員閱讀了該條消息,則將消息閱讀通知返回給服務(wù)端,消息閱讀通知包括接收端對應(yīng)的接收者的成員序列號和消息標(biāo)識,該成員序列號是從1開始編號的,且每一個接收者對應(yīng)一個唯一的序列號,不重復(fù)也不間隔,例如接收端有100個接收者,那么這100個接收者的序列號依次為1、2、3……100。假設(shè)服務(wù)端接收到的消息閱讀通知中的接收者的成員序列號為3,則將第一位圖數(shù)據(jù)的第3位修改為0,因此,原來5個接收者的第一位圖數(shù)據(jù)0x1F被修改為0x1B,該修改后的位圖數(shù)據(jù)稱為第二位圖數(shù)據(jù);同理,如果只有接收者的成員序列號為3的成員未返回消息閱讀通知,則第一位圖數(shù)據(jù)只有第3位不修改為0,因此,修改后得到的第二位圖數(shù)據(jù)為0x4。上述將第一位圖數(shù)據(jù)對應(yīng)位修改為0的操作采用對應(yīng)位的值與0進(jìn)行按位與操作來實現(xiàn)。步驟S105,根據(jù)第二位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。在對第一位圖數(shù)據(jù)的對應(yīng)所有的消息閱讀通知對應(yīng)的接收者成員序列號的位都進(jìn)行修改后,得到的位圖數(shù)據(jù)稱為第二位圖數(shù)據(jù),該第二位圖數(shù)據(jù)的每一位表示一個接收者的閱讀狀態(tài),具體地,若為0,表示該位對應(yīng)的接收者已閱讀消息,若為1,表示該位對應(yīng)的接收者未閱讀消息。若發(fā)送端想了解接收端的成員的閱讀狀態(tài),則可以通過把消息標(biāo)識提供給服務(wù)端,服務(wù)端就能夠根據(jù)消息標(biāo)識和第二位圖數(shù)據(jù)的對應(yīng)關(guān)系查詢第二位圖數(shù)據(jù),并返回該第二位圖數(shù)據(jù)給發(fā)送端,發(fā)送端即可了解到接收端的接收者的閱讀狀態(tài);或者,直接由服務(wù)端將接收端的閱讀狀態(tài)傳遞給發(fā)送端。下面,以接收端為一個接收者的私人通訊模式為例,說明上述步驟S101到步驟S105的具體實施:在步驟S101中,發(fā)送端A向接收者B發(fā)送消息,服務(wù)端接收到發(fā)送端A信息、消息數(shù)據(jù)、接收者B信息后,為該消息生成消息標(biāo)識mid1,并且將消息標(biāo)識mid1返回給發(fā)送端A。在步驟S102中,接收端的記錄有一條接收者B的數(shù)據(jù)記錄,根據(jù)該記錄,服務(wù)端生成的第一位圖數(shù)據(jù)rs1為0x1,并將生成的消息標(biāo)識mid1和第一位圖數(shù)據(jù)rs1插入數(shù)據(jù)庫中。在步驟S103中,服務(wù)端向接收者B發(fā)送攜帶消息數(shù)據(jù)和消息標(biāo)識mid1等信息的消息。在步驟S104中,接收者B接收到消息后,返回消息閱讀通知給服務(wù)端,包括發(fā)送端A信息及消息標(biāo)識mid1,并將第一位圖數(shù)據(jù)rs1為1的位置為0,記為第二位圖數(shù)據(jù)rs2;如果接收者B未返回消息閱讀通知,則該方法終止。在步驟S105中,在得到第二位圖數(shù)據(jù)rs2后,可直接由服務(wù)端將接收者B的閱讀狀態(tài)返回給發(fā)送端A;或者,發(fā)送端A通過提供消息標(biāo)識mid1給服務(wù)端,來獲取接收者B的閱讀狀態(tài)。上述閱讀狀態(tài)即第二位圖數(shù)據(jù)rs2對應(yīng)位的0或1值,若為0,則表示消息mid1已被接收者B閱讀,若為1,則表示消息mid1未被接收者B閱讀。根據(jù)本實施例提供的即時消息閱讀狀態(tài)的記錄方法,在接收到發(fā)送端發(fā)送的消息之后,根據(jù)接收端的記錄生成第一位圖數(shù)據(jù);在接收到接收端返回的消息閱讀通知之后,根據(jù)消息閱讀通知修改第一位圖數(shù)據(jù)得到第二位圖數(shù)據(jù),第二位圖數(shù)據(jù)記錄了即時消息的閱讀狀態(tài),以便向發(fā)送端返回消息的閱讀狀態(tài)。本發(fā)明利用位圖記錄每個接收端的閱讀狀態(tài),將每個接收端的閱讀狀態(tài)的記錄壓縮為1bit,與現(xiàn)有技術(shù)至少占用16字節(jié)的一條記錄相比,大大節(jié)省了數(shù)據(jù)存儲空間,由此解決了給數(shù)據(jù)庫帶來巨大的數(shù)據(jù)寫入壓力及信息存儲壓力的問題。本發(fā)明通過位圖來對接收端的閱讀狀態(tài)進(jìn)行記錄,將每一個接收者的記錄壓縮到1bit,解決了給數(shù)據(jù)庫帶來巨大的數(shù)據(jù)寫入壓力及信息存儲壓力的問題,取得了節(jié)省數(shù)據(jù)存儲空間的有益效果。尤其當(dāng)接收端為數(shù)量龐大的群組成員時,采用本發(fā)明進(jìn)行記錄,取得的效果則更為明顯。在對本發(fā)明的優(yōu)選的實施例進(jìn)行實施之前,通過建立合理的數(shù)據(jù)結(jié)構(gòu)模型來簡化實施過程的記錄和查詢,本發(fā)明建立的數(shù)據(jù)結(jié)構(gòu)模型有信息數(shù)據(jù)表模型(message_t)、群成員數(shù)據(jù)表模型(qun_member_t)和信息相關(guān)的群成員快照數(shù)據(jù)表模型(qun_snapshot_t)。a.信息數(shù)據(jù)表模型(message_t)主要字段參見表1:表1信息數(shù)據(jù)表message_t主要字段字段名字段類型message_idint64read_statusbitmapmessage_id:每次發(fā)送一條消息時,服務(wù)端都會新生成一條消息記錄,每條消息記錄都有唯一對應(yīng)的message_id值,即消息標(biāo)識,且該message_id值嚴(yán)格單調(diào)遞增,即:后發(fā)送消息的消息id將比先發(fā)送的值大。read_status:表示該條消息被接收者閱讀的閱讀狀態(tài),當(dāng)read_status位圖值全為0表示全部接收者都已閱讀,否則表示部分接收者已閱讀或無人閱讀。b.群成員數(shù)據(jù)表模型(qun_member_t)主要字段參見表2:表2群成員數(shù)據(jù)表qun_member_t主要字段字段名字段類型qun_idint64member_seqint64qun_id:每當(dāng)用戶新創(chuàng)建群組時,服務(wù)端都將生成一個新的群組id,即群組標(biāo)識,不同的群組的群組id值嚴(yán)格單調(diào)遞增,即:后創(chuàng)建的群組的群組id將比先創(chuàng)建的群組的群組id值大。member_seq:每當(dāng)向群組中添加新的群組成員時,服務(wù)端都將在群組對應(yīng)的qun_id下,生成新的member_seq值,即群組成員對應(yīng)的成員序列號。相同qun_id值時,member_seq值嚴(yán)格單調(diào)遞增且連續(xù)。即,已有qun_id值為1的群組,第一個加入該群組的成員member_seq值為1,第二個加入的則為2,以此類推。c.信息相關(guān)的群成員快照數(shù)據(jù)表模型(qun_snapshot_t)主要字段:表3群成員快照數(shù)據(jù)表qun_snapshot_t主要字段qun_id:對應(yīng)于qun_member_t中的qun_id字段值message_id:對應(yīng)于message_t中的message_id字段值member_bitmap:群組成員快照位圖,每當(dāng)群組成員有人員增加或減少的變動時,都將向該表中添加一條群組成員快照記錄,member_bitmap中位圖第x位為0表示,member_seq值為x的成員還在群組中,否則表示該成員已經(jīng)退群。圖2示出了根據(jù)本發(fā)明另一個實施例的即時消息閱讀狀態(tài)的記錄方法的流程圖。本方法是針對于接收端為群組成員的情況,即接收端的多個接收者處于同一個群組中,如圖2所示,本方法包括以下步驟:步驟S201,接收發(fā)送端向接收端發(fā)送的消息,為消息生成消息標(biāo)識。服務(wù)端在接收到發(fā)送端發(fā)送的信息數(shù)據(jù)后,都會新生成一條信息記錄,每條信息記錄都有唯一對應(yīng)的message_id值,即消息標(biāo)識。步驟S202,根據(jù)群組標(biāo)識查詢?nèi)航M內(nèi)有效成員的記錄。根據(jù)發(fā)送消息的群組對應(yīng)的群組標(biāo)識qun_id值查詢?nèi)撼蓡T數(shù)據(jù)表qun_member_t,獲取發(fā)送消息時群組內(nèi)的有效成員的記錄,該有效成員的記錄即未退群的成員記錄。假設(shè)群組標(biāo)識qun_id值為1,查詢?nèi)撼蓡T數(shù)據(jù)表qun_member_t獲取的有效成員的記錄為:[{“qun_id”:1,“member_seq”:1},{“qun_id”:1,“member_seq”:2},…,]{“qun_id”:1,“member_seq”:1}為第1條記錄,{“qun_id”:1,“member_seq”:2}為第2條記錄。步驟S203,查詢?nèi)航M內(nèi)有效成員對應(yīng)的成員序列號。根據(jù)有效成員的記錄可以得到每一條記錄記錄的有效成員的成員序列號。例如,記錄{“qun_id”:1,“member_seq”:4}表示的群組內(nèi)有效成員對應(yīng)的成員序列號為4。步驟S204,將位圖中群組內(nèi)有效成員對應(yīng)的成員序列號對應(yīng)的位置的數(shù)據(jù)置為第一數(shù)據(jù),得到第一位圖數(shù)據(jù)。其中,第一位圖數(shù)據(jù)的每一位值表示群組內(nèi)的對應(yīng)成員序列號的成員是否有效,若為1,則表示對應(yīng)的成員為有效成員,即該成員仍在群組中;若為0,則表示對應(yīng)的成員為無效成員,即該成員已退群。第一位圖數(shù)據(jù)是和消息標(biāo)識對應(yīng)的,每一個消息標(biāo)識都會有一個唯一與之對應(yīng)的第一位圖數(shù)據(jù)。查詢到群組內(nèi)有效成員對應(yīng)的成員序列號member_seq后,將第一位圖數(shù)據(jù)read_status中對應(yīng)member_seq位設(shè)置為1。例如:第1條記錄記錄的有效成員的成員序列號msx為3,則將第一位圖數(shù)據(jù)rs1的第3位設(shè)置為1,即rs1為0x4;第2條記錄記錄的有效成員的成員序列號msx為5,則將第一位圖數(shù)據(jù)rs1的第5位設(shè)置為1,即rs1為0x14……依次將第一位圖數(shù)據(jù)rs1中對應(yīng)有效成員的成員序列號msx對應(yīng)位置的數(shù)據(jù)設(shè)置為第一數(shù)據(jù),得到第一位圖數(shù)據(jù)rs1。由此可見,群組成員的記錄生成第一位圖數(shù)據(jù)read_status的具體操作為,根據(jù)群組標(biāo)識qun_id查詢?nèi)航M內(nèi)有效成員的記錄,根據(jù)群組內(nèi)有效成員生成第一位圖數(shù)據(jù)。步驟S205,存儲消息標(biāo)識與第一位圖數(shù)據(jù)。將消息標(biāo)識message_id和與之對應(yīng)的第一位圖數(shù)據(jù)read_status插入到服務(wù)端的數(shù)據(jù)庫中。步驟S206,將消息發(fā)送給接收端。服務(wù)端向接收端的所有群組成員發(fā)送攜帶消息數(shù)據(jù)、成員序列號member_seq和消息標(biāo)識message_id等信息的消息。步驟S207,接收群組成員返回的消息閱讀通知。對于接收端對應(yīng)的群組成員為有效成員的情況,閱讀狀態(tài)有已讀、未讀兩種。接收端在接收到服務(wù)端發(fā)送的消息后,如果接收端的群組成員閱讀了該條消息,則將消息閱讀通知返回給服務(wù)端。步驟S208,根據(jù)消息閱讀通知確定返回消息閱讀通知的群組成員對應(yīng)的成員序列號。消息閱讀通知包括成員序列號member_seq和消息標(biāo)識message_id,即返回消息閱讀通知的成員要將已閱讀的消息對應(yīng)的消息標(biāo)識message_id和該成員的成員序列號member_seq返回給服務(wù)端。根據(jù)返回消息閱讀通知的成員序列號member_seq即可確定有哪些成員的閱讀狀態(tài)為已讀。步驟S209,將第一位圖數(shù)據(jù)對應(yīng)的位圖中返回消息閱讀通知的群組成員對應(yīng)的成員序列號對應(yīng)的位置的數(shù)據(jù)置為第二數(shù)據(jù),得到第二位圖數(shù)據(jù)。服務(wù)端根據(jù)消息閱讀通知中的成員序列號member_seq和消息標(biāo)識message_id的值查詢信息數(shù)據(jù)表message_t,并將第一位圖數(shù)據(jù)的對應(yīng)成員序列號member_seq的位設(shè)置為0,該設(shè)置為0的步驟采用對應(yīng)位的值與0進(jìn)行與操作來實現(xiàn),設(shè)置后的第一位圖數(shù)據(jù)read_status稱為第二位圖數(shù)據(jù)read_status。步驟S210,根據(jù)群組標(biāo)識和消息標(biāo)識獲取群成員快照位圖數(shù)據(jù),群成員快照位圖數(shù)據(jù)根據(jù)群組內(nèi)的未退群成員與已退群成員的快照記錄而設(shè)定。根據(jù)群組標(biāo)識qun_id和消息標(biāo)識message_id查詢?nèi)撼蓡T快照數(shù)據(jù)表qun_snapshot_t,獲取對應(yīng)的群成員快照位圖數(shù)據(jù)member_bitmap。其中,群成員快照位圖數(shù)據(jù)member_bitmap根據(jù)群組內(nèi)的未退群成員與已退群成員的快照記錄而設(shè)定,每當(dāng)群組成員有人員增加或減少的變動時,都將向群成員快照數(shù)據(jù)表qun_snapshot_t中添加一條快照記錄,群成員快照位圖數(shù)據(jù)member_bitmap中對應(yīng)成員序列號member_seq的位的值為0表示成員序列號member_seq對應(yīng)的成員還在群組中,否則表示該成員已經(jīng)退群。以群組中原有10位群組成員為例,成員序列號msx為3和5的兩位群組成員中途退群,則最新的群成員快照位圖數(shù)據(jù)mb1的第3位和第5位的值為1,其余各位的值為0,即群成員快照位圖數(shù)據(jù)mb1為0x14。步驟S211,將群成員快照位圖數(shù)據(jù)和第二位圖數(shù)據(jù)進(jìn)行按位操作,得到用來記錄群組成員閱讀狀態(tài)的第三位圖數(shù)據(jù);遍歷第三位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。第二位圖數(shù)據(jù)read_status的某一位的值為0有兩種情況:該位對應(yīng)的群組成員已閱讀消息標(biāo)識message_id對應(yīng)的消息和該位對應(yīng)的群組成員已退群。因此并不能直接確定哪些群組成員已閱讀消息標(biāo)識message_id對應(yīng)的消息,本發(fā)明實施例采用將第二位圖數(shù)據(jù)read_status和群成員快照位圖數(shù)據(jù)member_bitmap按位異或的方法,得到第三位圖數(shù)據(jù)bitmap,這樣就能將第二位圖數(shù)據(jù)read_status中對應(yīng)已退群成員的位為0的值置為1,因而發(fā)送端就能了解到哪些成員已經(jīng)閱讀了消息標(biāo)識message_id對應(yīng)的消息。延用上述群組中原有10位群組成員的例子,群組中的無效成員為成員序列號msx為3和5的成員,可得第一位圖數(shù)據(jù)rs1的第3位和第5位置0,其他位置1,因此第一位圖數(shù)據(jù)rs1為0x3EB;假設(shè)返回消息閱讀通知的成員的成員序列號msx為1、2、4、6、7、9和10,則在第一位圖數(shù)據(jù)rs1的基礎(chǔ)上,將除第1、2、4、6、7、9和10位的值與0進(jìn)行按位與操作,得到修改后的第二位圖數(shù)據(jù)rs2為0x80。該第二位圖數(shù)據(jù)rs2的值只有第8位為1,但實際上成員序列號msx為3和5的成員也沒有返回消息通知,因此采用本實施例的方法,將第二位圖數(shù)據(jù)rs2和群成員快照位圖數(shù)據(jù)mb1為0x14進(jìn)行按位異或操作,得到第三位圖數(shù)據(jù)mp1為0x94,即第1、2、4、6、7、9和10位的值為0,表示對應(yīng)成員序列號msx為1、2、4、6、7、9和10的成員返回了消息閱讀通知。由此可見,通過得到的第三位圖數(shù)據(jù)bitmap的每一位可以得知每一位成員的消息閱讀狀態(tài)。根據(jù)本實施例提供的即時消息閱讀狀態(tài)的記錄方法,在接收到發(fā)送端發(fā)送的消息之后,根據(jù)接收端的記錄生成第一位圖數(shù)據(jù);在接收到接收端返回的消息閱讀通知之后,根據(jù)消息閱讀通知修改第一位圖數(shù)據(jù)得到第二位圖數(shù)據(jù),第二位圖數(shù)據(jù)記錄了即時消息的閱讀狀態(tài),以便向發(fā)送端返回消息的閱讀狀態(tài)。本發(fā)明利用位圖記錄每個接收端的閱讀狀態(tài),將每個接收端的閱讀狀態(tài)的記錄壓縮為1bit,與現(xiàn)有技術(shù)至少占用16字節(jié)的一條記錄相比,大大節(jié)省了數(shù)據(jù)存儲空間,由此解決了給數(shù)據(jù)庫帶來巨大的數(shù)據(jù)寫入壓力及信息存儲壓力的問題;通過獲取群成員快照位圖數(shù)據(jù),確認(rèn)群組中的有效成員,并采用第三位圖數(shù)據(jù)將已退群成員的閱讀狀態(tài)和有效成員的閱讀狀態(tài)區(qū)別標(biāo)識,這樣發(fā)送端就能直接通過第三位圖數(shù)據(jù)來判斷已經(jīng)閱讀了消息的成員,無須參照其他信息,使發(fā)送端獲取閱讀狀態(tài)的方式更為簡捷。圖3示出了根據(jù)本發(fā)明一個實施例的即時消息閱讀狀態(tài)的記錄裝置的功能框圖。如圖3所示,本裝置包括:接收模塊310、生成模塊320、發(fā)送模塊330、修改模塊340、返回模塊350。接收模塊310,用于接收發(fā)送端向接收端發(fā)送的消息,為消息生成消息標(biāo)識。服務(wù)端在接收到發(fā)送端信息、消息數(shù)據(jù)、接收端信息等數(shù)據(jù)后,都會新生成一條信息記錄,每條信息記錄都有唯一對應(yīng)的message_id值,即消息標(biāo)識,并將該消息標(biāo)識返回給發(fā)送端,用于發(fā)送端獲取閱讀狀態(tài)的依據(jù),同時,該消息標(biāo)識也能用于數(shù)據(jù)表的相關(guān)數(shù)據(jù)查詢。。生成模塊320,用于根據(jù)接收端的記錄生成第一位圖數(shù)據(jù),存儲消息標(biāo)識與第一位圖數(shù)據(jù)。其中,接收端的記錄記錄有接收端的接收者情況,第一位圖數(shù)據(jù)是和消息標(biāo)識對應(yīng)的,每一個消息標(biāo)識都會有一個唯一與之對應(yīng)的第一位圖數(shù)據(jù)。將消息標(biāo)識和與之對應(yīng)的第一位圖數(shù)據(jù)插入到服務(wù)端的數(shù)據(jù)庫中。發(fā)送模塊330,用于將消息發(fā)送給接收端。服務(wù)端向接收端的所有接收者發(fā)送攜帶消息數(shù)據(jù)和消息標(biāo)識等信息的消息。修改模塊340,用于接收接收端返回的消息閱讀通知,根據(jù)消息閱讀通知對第一位圖數(shù)據(jù)進(jìn)行修改,得到第二位圖數(shù)據(jù)。服務(wù)端根據(jù)消息閱讀通知中的成員序列號和消息標(biāo)識查詢到第一位圖數(shù)據(jù),并將第一位圖數(shù)據(jù)的對應(yīng)成員序列號的位設(shè)置為0,該設(shè)置為0的步驟采用該位的值與0進(jìn)行與操作,修改后的第一位圖數(shù)據(jù)稱為第二位圖數(shù)據(jù)。返回模塊350,用于根據(jù)第二位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。在對第一位圖數(shù)據(jù)的對應(yīng)所有的消息閱讀通知對應(yīng)的接收者成員序列號的位都進(jìn)行修改后,得到的位圖數(shù)據(jù)稱為第二位圖數(shù)據(jù),該第二位圖數(shù)據(jù)的每一位表示一個接收者的閱讀狀態(tài),具體地,若為0,表示該位對應(yīng)的接收者已閱讀消息,若為1,表示該位對應(yīng)的接收者未閱讀消息。根據(jù)本實施例提供的即時消息閱讀狀態(tài)的記錄裝置,在接收到發(fā)送端發(fā)送的消息之后,根據(jù)接收端的記錄生成第一位圖數(shù)據(jù);在接收到接收端返回的消息閱讀通知之后,根據(jù)消息閱讀通知修改第一位圖數(shù)據(jù)得到第二位圖數(shù)據(jù),第二位圖數(shù)據(jù)記錄了即時消息的閱讀狀態(tài),以便向發(fā)送端返回消息的閱讀狀態(tài)。本發(fā)明利用位圖記錄每個接收端的閱讀狀態(tài),將每個接收端的閱讀狀態(tài)的記錄壓縮為1bit,與現(xiàn)有技術(shù)至少占用16字節(jié)的一條記錄相比,大大節(jié)省了數(shù)據(jù)存儲空間,由此解決了給數(shù)據(jù)庫帶來巨大的數(shù)據(jù)寫入壓力及信息存儲壓力的問題。圖4示出了根據(jù)本發(fā)明另一個實施例的即時消息閱讀狀態(tài)的記錄裝置的功能框圖。如圖4所示,本裝置在圖3提供的即時消息閱讀狀態(tài)的記錄裝置的功能框圖的基礎(chǔ)上,還包括:獲取模塊420和操作模塊430,修改模塊340進(jìn)一步包括接收單元411、確定單元412和設(shè)置單元413。接收模塊310,用于接收發(fā)送端向接收端發(fā)送的消息,為消息生成消息標(biāo)識;其中,接收端為群組成員。服務(wù)端在接收到發(fā)送端發(fā)送的信息數(shù)據(jù)后,都會新生成一條信息記錄,每條信息記錄都有唯一對應(yīng)的message_id值,即消息標(biāo)識。生成模塊320,用于根據(jù)群組標(biāo)識查詢?nèi)航M成員的記錄,根據(jù)群組成員的記錄生成第一位圖數(shù)據(jù)。根據(jù)發(fā)送消息的群組對應(yīng)的群組標(biāo)識qun_id值查詢?nèi)撼蓡T數(shù)據(jù)表qun_member_t,獲取發(fā)送消息時群組內(nèi)的有效成員的記錄,該有效成員的記錄即未退群的成員記錄;查詢到群組內(nèi)有效成員對應(yīng)的成員序列號member_seq后,將第一位圖數(shù)據(jù)read_status中對應(yīng)member_seq位設(shè)置為1。由此可見,生成模塊320進(jìn)一步用于:根據(jù)群組標(biāo)識查詢?nèi)航M內(nèi)有效成員的記錄,根據(jù)群組內(nèi)有效成員生成第一位圖數(shù)據(jù)。具體地,生成模塊320進(jìn)一步用于:根據(jù)群組標(biāo)識查詢?nèi)航M內(nèi)有效成員的記錄;查詢?nèi)航M內(nèi)有效成員對應(yīng)的成員序列號;將位圖中群組內(nèi)有效成員對應(yīng)的成員序列號對應(yīng)的位置的數(shù)據(jù)置為第一數(shù)據(jù),得到第一位圖數(shù)據(jù)。將消息標(biāo)識message_id和與之對應(yīng)的第一位圖數(shù)據(jù)read_status插入到服務(wù)端的數(shù)據(jù)庫中。發(fā)送模塊330,將消息發(fā)送給接收端。服務(wù)端向接收端的所有群組成員發(fā)送攜帶消息數(shù)據(jù)、成員序列號member_seq和消息標(biāo)識message_id等信息的消息。修改模塊340進(jìn)一步包括接收單元411、確定單元412和設(shè)置單元413。接收單元411,用于接收群組成員返回的消息閱讀通知。對于接收端對應(yīng)的群組成員為有效成員的情況,閱讀狀態(tài)有已讀、未讀兩種。接收端在接收到服務(wù)端發(fā)送的消息后,如果接收端的群組成員閱讀了該條消息,則將消息閱讀通知返回給服務(wù)端。確定單元412,用于根據(jù)消息閱讀通知確定返回消息閱讀通知的群組成員對應(yīng)的成員序列號。消息閱讀通知包括成員序列號member_seq和消息標(biāo)識message_id,即返回消息閱讀通知的成員要將已閱讀的消息對應(yīng)的消息標(biāo)識message_id和該成員的成員序列號member_seq返回給服務(wù)端。根據(jù)返回消息閱讀通知的成員序列號member_seq即可確定有哪些成員的閱讀狀態(tài)為已讀。設(shè)置單元413,用于將第一位圖數(shù)據(jù)對應(yīng)的位圖中返回消息閱讀通知的群組成員對應(yīng)的成員序列號對應(yīng)的位置的數(shù)據(jù)置為第二數(shù)據(jù),得到第二位圖數(shù)據(jù)。服務(wù)端根據(jù)消息閱讀通知中的成員序列號member_seq和消息標(biāo)識message_id的值查詢信息數(shù)據(jù)表message_t,并將第一位圖數(shù)據(jù)對應(yīng)成員序列號member_seq的位設(shè)置為0,該設(shè)置為0的步驟采用對應(yīng)位的值與0進(jìn)行與操作來實現(xiàn),設(shè)置后的第一位圖數(shù)據(jù)記為read_status,稱為第二位圖數(shù)據(jù)read_status。獲取模塊420,用于根據(jù)群組標(biāo)識和消息標(biāo)識獲取群組成員快照位圖數(shù)據(jù),群組成員快照位圖數(shù)據(jù)根據(jù)群組內(nèi)的未退群成員與已退群成員的快照記錄而設(shè)定。根據(jù)群組標(biāo)識qun_id和消息標(biāo)識message_id查詢?nèi)撼蓡T快照數(shù)據(jù)表qun_snapshot_t,可以獲取對應(yīng)的群成員快照位圖數(shù)據(jù)member_bitmap。其中,群成員快照位圖數(shù)據(jù)member_bitmap根據(jù)群組內(nèi)的未退群成員與已退群成員的快照記錄而設(shè)定,每當(dāng)群組成員有人員增加或減少的變動時,都將向群成員快照數(shù)據(jù)表qun_snapshot_t中添加一條快照記錄,群成員快照位圖數(shù)據(jù)member_bitmap中對應(yīng)成員序列號member_seq的位的值為0表示成員序列號member_seq對應(yīng)的成員還在群組中,否則表示該成員已經(jīng)退群。操作模塊430,用于將群組成員快照位圖數(shù)據(jù)和第二位圖數(shù)據(jù)進(jìn)行按位操作,得到用來記錄群組成員閱讀狀態(tài)的第三位圖數(shù)據(jù)。第二位圖數(shù)據(jù)read_status的某一位的值為0有兩種情況:該位對應(yīng)的群組成員已閱讀消息標(biāo)識message_id對應(yīng)的消息和該位對應(yīng)的群組成員已退群。因此并不能直接確定哪些群組成員已閱讀消息標(biāo)識message_id對應(yīng)的消息,本發(fā)明實施例采用將第二位圖數(shù)據(jù)read_status和群成員快照位圖數(shù)據(jù)member_bitmap按位異或的方法,得到第三位圖數(shù)據(jù)bitmap,這樣就能將第二位圖數(shù)據(jù)read_status中對應(yīng)已退群成員的位為0的值置為1,因而發(fā)送端就能了解到哪些成員已經(jīng)閱讀了消息標(biāo)識message_id對應(yīng)的消息。返回模塊350,用于遍歷第三位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。第三位圖數(shù)據(jù)bitmap的每一位代表對應(yīng)成員序列號的成員的閱讀狀態(tài),將第三位圖數(shù)據(jù)bitmap返回給發(fā)送端,發(fā)送端就能了解到每一個成員的消息閱讀情況。根據(jù)本實施例提供的即時消息閱讀狀態(tài)的記錄裝置,在接收到發(fā)送端發(fā)送的消息之后,根據(jù)接收端的記錄生成第一位圖數(shù)據(jù);在接收到接收端返回的消息閱讀通知之后,根據(jù)消息閱讀通知修改第一位圖數(shù)據(jù)得到第二位圖數(shù)據(jù),第二位圖數(shù)據(jù)記錄了即時消息的閱讀狀態(tài),以便向發(fā)送端返回消息的閱讀狀態(tài)。本發(fā)明利用位圖記錄每個接收端的閱讀狀態(tài),將每個接收端的閱讀狀態(tài)的記錄壓縮為1bit,與現(xiàn)有技術(shù)至少占用16字節(jié)的一條記錄相比,大大節(jié)省了數(shù)據(jù)存儲空間,由此解決了給數(shù)據(jù)庫帶來巨大的數(shù)據(jù)寫入壓力及信息存儲壓力的問題;通過獲取群成員快照位圖數(shù)據(jù),確認(rèn)群組中的有效成員,并采用第三位圖數(shù)據(jù)將已退群成員的閱讀狀態(tài)和有效成員的閱讀狀態(tài)區(qū)別標(biāo)識,這樣發(fā)送端就能直接通過第三位圖數(shù)據(jù)來判斷已經(jīng)閱讀了消息的成員,無須參照其他信息,使發(fā)送端獲取閱讀狀態(tài)的方式更為簡捷。。在此提供的算法和顯示不與任何特定計算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細(xì)節(jié)的情況下實踐。在一些實例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權(quán)利要求書由此明確地并入該具體實施方式,其中每個權(quán)利要求本身都作為本發(fā)明的單獨(dú)實施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實施例不同的一個或多個設(shè)備中。可以把實施例中的模塊或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運(yùn)行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的即時消息閱讀狀態(tài)的記錄裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計算機(jī)程序和計算機(jī)程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機(jī)可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機(jī)來實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。本發(fā)明公開了:A1.一種即時消息閱讀狀態(tài)的記錄方法,包括:接收發(fā)送端向接收端發(fā)送的消息,為所述消息生成消息標(biāo)識;根據(jù)所述接收端的記錄生成第一位圖數(shù)據(jù),存儲所述消息標(biāo)識與所述第一位圖數(shù)據(jù);將所述消息發(fā)送給接收端;接收接收端返回的消息閱讀通知,根據(jù)消息閱讀通知對第一位圖數(shù)據(jù)進(jìn)行修改,得到第二位圖數(shù)據(jù);根據(jù)所述第二位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。A2.根據(jù)A1所述的方法,所述接收端為群組成員;所述根據(jù)所述接收端的記錄生成第一位圖數(shù)據(jù)具體為:根據(jù)群組標(biāo)識查詢?nèi)航M成員的記錄,根據(jù)所述群組成員的記錄生成第一位圖數(shù)據(jù)。A3.根據(jù)A2所述的方法,所述根據(jù)群組標(biāo)識查詢?nèi)航M成員的記錄,根據(jù)所述群組成員的記錄生成第一位圖數(shù)據(jù)具體為:根據(jù)群組標(biāo)識查詢?nèi)航M內(nèi)有效成員的記錄,根據(jù)所述群組內(nèi)有效成員生成第一位圖數(shù)據(jù)。A4.根據(jù)A3所述的方法,所述根據(jù)群組標(biāo)識查詢?nèi)航M內(nèi)有效成員的記錄,根據(jù)所述群組內(nèi)有效成員生成第一位圖數(shù)據(jù)進(jìn)一步包括:根據(jù)群組標(biāo)識查詢?nèi)航M內(nèi)有效成員的記錄;查詢?nèi)航M內(nèi)有效成員對應(yīng)的成員序列號;將位圖中群組內(nèi)有效成員對應(yīng)的成員序列號對應(yīng)的位置的數(shù)據(jù)置為第一數(shù)據(jù),得到第一位圖數(shù)據(jù)。A5.根據(jù)A1所述的方法,所述接收接收端返回的消息閱讀通知,根據(jù)消息閱讀通知對第一位圖數(shù)據(jù)進(jìn)行修改,得到第二位圖數(shù)據(jù)進(jìn)一步包括:接收群組成員返回的消息閱讀通知;根據(jù)消息閱讀通知確定返回消息閱讀通知的群組成員對應(yīng)的成員序列號;將第一位圖數(shù)據(jù)對應(yīng)的位圖中返回消息閱讀通知的群組成員對應(yīng)的成員序列號對應(yīng)的位置的數(shù)據(jù)置為第二數(shù)據(jù),得到第二位圖數(shù)據(jù)。A6.根據(jù)A1所述的方法,在所述根據(jù)所述第二位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)之前,所述方法還包括:根據(jù)群組標(biāo)識和消息標(biāo)識獲取群組成員快照位圖數(shù)據(jù),所述群組成員快照位圖數(shù)據(jù)根據(jù)群組內(nèi)的未退群成員與已退群成員的快照記錄而設(shè)定。A7.根據(jù)A6所述的方法,所述根據(jù)所述第二位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)進(jìn)一步包括:將所述群組成員快照位圖數(shù)據(jù)和所述第二位圖數(shù)據(jù)進(jìn)行按位操作,得到用來記錄群組成員閱讀狀態(tài)的第三位圖數(shù)據(jù);遍歷所述第三位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。本發(fā)明還公開了:B8.一種即時消息閱讀狀態(tài)的記錄裝置,包括:接收模塊,用于接收發(fā)送端向接收端發(fā)送的消息,為所述消息生成消息標(biāo)識;生成模塊,用于根據(jù)所述接收端的記錄生成第一位圖數(shù)據(jù),存儲所述消息標(biāo)識與所述第一位圖數(shù)據(jù);發(fā)送模塊,用于將所述消息發(fā)送給接收端;修改模塊,用于接收接收端返回的消息閱讀通知,根據(jù)消息閱讀通知對第一位圖數(shù)據(jù)進(jìn)行修改,得到第二位圖數(shù)據(jù);返回模塊,用于根據(jù)所述第二位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。B9.根據(jù)B8所述的裝置,所述接收端為群組成員;所述生成模塊進(jìn)一步用于:根據(jù)群組標(biāo)識查詢?nèi)航M成員的記錄,根據(jù)所述群組成員的記錄生成第一位圖數(shù)據(jù)。B10.根據(jù)B9所述的裝置,所述生成模塊進(jìn)一步用于:根據(jù)群組標(biāo)識查詢?nèi)航M內(nèi)有效成員的記錄,根據(jù)所述群組內(nèi)有效成員生成第一位圖數(shù)據(jù)。B11.根據(jù)B10所述的裝置,所述生成模塊進(jìn)一步用于:根據(jù)群組標(biāo)識查詢?nèi)航M內(nèi)有效成員的記錄;查詢?nèi)航M內(nèi)有效成員對應(yīng)的成員序列號;將位圖中群組內(nèi)有效成員對應(yīng)的成員序列號對應(yīng)的位置的數(shù)據(jù)置為第一數(shù)據(jù),得到第一位圖數(shù)據(jù)。B12.根據(jù)B8所述的裝置,所述修改模塊進(jìn)一步包括:接收單元,用于接收群組成員返回的消息閱讀通知;確定單元,用于根據(jù)消息閱讀通知確定返回消息閱讀通知的群組成員對應(yīng)的成員序列號;設(shè)置單元,用于將第一位圖數(shù)據(jù)對應(yīng)的位圖中返回消息閱讀通知的群組成員對應(yīng)的成員序列號對應(yīng)的位置的數(shù)據(jù)置為第二數(shù)據(jù),得到第二位圖數(shù)據(jù)。B13.根據(jù)B8所述的裝置,所述裝置進(jìn)一步包括:獲取模塊,用于根據(jù)群組標(biāo)識和消息標(biāo)識獲取群組成員快照位圖數(shù)據(jù),所述群組成員快照位圖數(shù)據(jù)根據(jù)群組內(nèi)的未退群成員與已退群成員的快照記錄而設(shè)定。B14.根據(jù)B13所述的裝置,所述裝置進(jìn)一步包括:操作模塊,用于將所述群組成員快照位圖數(shù)據(jù)和所述第二位圖數(shù)據(jù)進(jìn)行按位操作,得到用來記錄群組成員閱讀狀態(tài)的第三位圖數(shù)據(jù);所述返回模塊進(jìn)一步用于:遍歷所述第三位圖數(shù)據(jù),向發(fā)送端返回消息的閱讀狀態(tài)。當(dāng)前第1頁1 2 3