專利名稱:和客戶端進行通信的方法以及服務器的制作方法
技術領域:
本發(fā)明涉及通信領域,具體涉及一種和客戶端進行通信的方法以及服務器。
背景技術:
隨著網(wǎng)絡的快速發(fā)展,出現(xiàn)了很多基于網(wǎng)絡的應用,這些網(wǎng)絡應用包括在線視頻、在線交友以及網(wǎng)絡游戲等。網(wǎng)絡應用的用戶需要通過客戶端和服務器進行通信,以獲取服務器提供的服務。 為了實現(xiàn)客戶端與服務器之間的通信,首先需要在客戶端和服務器之間建立連接,常用的連接方式有兩種,一種是長連接通信方式,一種是短連接通信方式。所謂長連接通信,是指建立一個連接之后,在這個連接上可以連續(xù)發(fā)送多個數(shù)據(jù)包,然后斷開連接,在連接保持期間,如果沒有數(shù)據(jù)包發(fā)送,需要發(fā)送鏈路檢測包;所謂短連接通信,是指通信雙方有數(shù)據(jù)交互時,就建立一個連接,數(shù)據(jù)發(fā)送完成后,則斷開此連接,即每次連接只完成一項業(yè)務的發(fā)送。由于短連接通信方式需要頻繁建立連接,因此,在網(wǎng)絡應用中通常采用長連接通信方式進行通信。但是,目前,長連接的建立僅僅是服務器端的行為,客戶端并不知曉長連接是否已經(jīng)建立以及建立了多少個長連接,甚至也無法知道長連接是否已經(jīng)失效。因此,客戶端無法知曉長連接的建立情況,不利于客戶端與服務器之間的通信。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的和客戶端進行通信的方法以及服務器。依據(jù)本發(fā)明的一個方面,提供了一種在服務器處和客戶端進行通信的方法,包括以下步驟接收到客戶端發(fā)送的請求消息,獲取包含在請求消息中的客戶端的客戶端標識;確定客戶端信息列表中是否存儲了與客戶端標識相對應的長連接通道標識,如果存儲了長連接通道標識,則向客戶端返回用于指示長連接已建立的第一響應消息;如果未存儲長連接通道標識,則為客戶端分配一個長連接通道,將長連接通道的長連接通道標識以及客戶端標識存入客戶端信息列表中,并向客戶端返回用于指示長連接未建立的第二響應消息,其中,第二響應消息中包含長連接通道標識,用于指示客戶端根據(jù)長連接通道標識與服務器建立長連接;以及根據(jù)與客戶端之間建立的長連接,在服務器和客戶端之間傳輸消息??蛇x地,其中請求信息還包括當前在客戶端上運行的應用的應用標識,以及在服務器和客戶端之間傳輸消息的步驟包括將該應用相關的消息傳輸?shù)娇蛻舳???蛇x地,客戶端每隔預設的第一時間間隔向服務器發(fā)送請求消息??蛇x地,還包括步驟在客戶端信息列表中與客戶端標識相關聯(lián)地存儲每次接收到客戶端發(fā)送的請求消息的時間??蛇x地,還包括步驟每隔預設的第二時間間隔對客戶端信息列表中存儲的客戶端發(fā)送請求消息的時間間隔進行檢測,將與在第二時間間隔內(nèi)沒有發(fā)送請求消息的客戶端對應的長連接通道標識刪除,并斷開長連接通道標識對應的長連接通道,其中,第二時間間隔大于第一時間間隔。可選地,還包括步驟客戶端每隔預設的第三時間間隔向服務器發(fā)送同步請求,月艮務器接收到同步請求后向客戶端返回未同步的數(shù)據(jù)。根據(jù)本發(fā)明的另一方面,提供了一種適于和客戶端進行通信的服務器,包括存儲單元,適于存儲客戶端信息列表;通信接口,適于接收到客戶端發(fā)送的請求消息,獲取包含在請求消息中的客戶端的客戶端標識;通信控制器,適于確定客戶端信息列表中是否存儲了與客戶端標識相對應的長·連接通道標識,如果存儲了長連接通道標識,則控制通信接口向客戶端返回指示長連接已建立的第一響應消息;如果未存儲長連接通道標識,則為客戶端分配一個長連接通道,將長連接通道的長連接通道標識以及客戶端標識存入客戶端信息列表中,并控制通信接口向客戶端返回指示長連接未建立的第二響應消息,其中,第二響應消息中包含長連接通道標識,該長連接通道標識指示客戶端根據(jù)長連接通道標識與服務器建立長連接;其中,通信接口還根據(jù)與客戶端之間建立的長連接,在服務器和客戶端之間傳輸消息??蛇x地,請求信息還包括當前在客戶端上運行的應用的應用標識,則通信接口具體用于將該應用相關的消息傳輸?shù)娇蛻舳???蛇x地,客戶端每隔預設的第一時間間隔向服務器發(fā)送請求消息。可選地,存儲單元還適于在客戶端信息列表中與客戶端標識相關聯(lián)地存儲每次接收到客戶端發(fā)送的請求消息的時間??蛇x地,進一步包括鏈接管理器,適于每隔預設的第二時間間隔對客戶端信息列表中存儲的客戶端發(fā)送請求消息的時間間隔進行檢測,將與在第二時間間隔內(nèi)沒有發(fā)送請求消息的客戶端對應的長連接通道標識刪除,并斷開長連接通道標識對應的長連接通道,其中,第二時間間隔大于第一時間間隔。可選地,還包括同步單元,其接收客戶端每隔預設的第三時間間隔發(fā)送的同步請求,并根據(jù)同步請求向客戶端返回未同步的數(shù)據(jù)。根據(jù)本發(fā)明的和客戶端進行通信的方法以及服務器,在接收到客戶端主動發(fā)送的請求消息后,根據(jù)客戶端信息列表確定與該客戶端之間是否已經(jīng)建立了長連接通道,并將結果返回給客戶端,由此解決了現(xiàn)有技術中的客戶端無法知曉長連接的建立情況的問題,取得了能夠使客戶端及時知曉長連接的建立情況以便與服務器進行通信的有益效果。上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本發(fā)明的具體實施方式
。
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領域普通技術人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認為是對本發(fā)明的限制。而且在整個附圖中,用相同的附圖標記表示相同的部件。在附圖中圖I示出了根據(jù)本發(fā)明一個實施例的在服務器處和客戶端進行通信的方法的流程圖2示出了根據(jù)本發(fā)明一個實施例的包含適于和客戶端進行通信的服務器的通信系統(tǒng)的結構示意圖。
具體實施例方式下面將參照附圖更詳細地描述本公開的示例性實施例。雖然附圖中顯示了本公開的示例性實施例,然而應當理解,可以以各種形式實現(xiàn)本公開而不應被這里闡述的實施例所限制。相反,提供這些實施例是為了能夠更透徹地理解本公開,并且能夠將本公開的范圍完整的傳達給本領域的技術人員。圖I示出了本發(fā)明實施例提供的一種在服務器處和客戶端進行通信的方法。圖I所示的方法主要示出了服務器端執(zhí)行的步驟,在服務器執(zhí)行步驟SllO之前,客戶端首先需要構造并發(fā)送請求消息。具體地,在構造請求消息時,客戶端每隔預設的第一時間間隔(例如,4分鐘)獲取一次當前在該客戶端上運行的應用的應用標識,以及該客戶端的客戶端標識,并根據(jù)獲取 的應用標識以及客戶端標識構造請求消息,將該請求消息發(fā)送給服務器。當前在該客戶端上運行的應用例如可以是用戶在該客戶端上正在玩的網(wǎng)絡游戲。這時,相應的應用標識可以是該網(wǎng)絡游戲的游戲名稱、游戲ID和/或游戲區(qū)服等相關的信息;或者,當前在該客戶端上運行的應用也可以是用戶在該客戶端上正在收聽的歌曲,這時,相應的應用標識可以是該歌曲的歌曲名稱等。另外,當客戶端上運行的應用為多個時,也可以同時獲取這多個應用的應用標識。具體地,在獲取客戶端上運行的應用的應用標識時,可以通過多種方法,例如,可以通過任務管理器中的進程個數(shù)和進程名稱獲取。以客戶端為網(wǎng)絡瀏覽器、應用為基于網(wǎng)頁的網(wǎng)絡游戲為例來說,可以通過一些特定的javascript代碼來獲取網(wǎng)絡游戲的游戲ID作為應用標識例如,在游戲頁面中嵌入代碼〈script src=〃http://u8. wan.360. cn/loader. js〃>U8. location=〃frmmo_S19〃;</script),其中的location字段標示了用戶所玩游戲的游戲區(qū)服,然后,通過loader, js腳本即可獲取location字段中的內(nèi)容,進而獲取到游戲區(qū)服以及該網(wǎng)絡游戲的游戲ID。客戶端的客戶端標識主要是指能夠唯一確定該客戶端的標識信息,例如,可以是該客戶端對應的IP地址。隨后,將所獲取的應用標識(即游戲ID)和客戶端標識發(fā)送到服務器,這可以利用
下面的代碼來完成
權利要求
1.一種在服務器處和客戶端進行通信的方法,包括以下步驟接收到客戶端發(fā)送的請求消息,獲取包含在所述請求消息中的所述客戶端的客戶端標確定客戶端信息列表中是否存儲了與所述客戶端標識相對應的長連接通道標識,如果存儲了長連接通道標識,則向所述客戶端返回用于指示長連接已建立的第一響應消息;如果未存儲長連接通道標識,則為所述客戶端分配一個長連接通道,將所述長連接通道的長連接通道標識以及所述客戶端標識存入所述客戶端信息列表中,并向所述客戶端返回用于指示長連接未建立的第二響應消息,其中,所述第二響應消息中包含所述長連接通道標識,用于指示客戶端根據(jù)所述長連接通道標識與所述服務器建立長連接;以及根據(jù)與客戶端之間建立的長連接,在服務器和客戶端之間傳輸消息。
2.如權利要求I所述的方法,其中所述請求信息還包括當前在所述客戶端上運行的應用的應用標識,以及所述在服務器和客戶端之間傳輸消息的步驟包括將該應用相關的消息傳輸?shù)娇蛻舳恕?br>
3.如權利要求I所述的方法,所述客戶端每隔預設的第一時間間隔向服務器發(fā)送所述請求消息。
4.如權利要求1-3中任一個所述的方法,還包括步驟在所述客戶端信息列表中與所述客戶端標識相關聯(lián)地存儲每次接收到所述客戶端發(fā)送的請求消息的時間。
5.如權利要求4所述的方法,還包括步驟每隔預設的第二時間間隔對所述客戶端信息列表中存儲的客戶端發(fā)送請求消息的時間間隔進行檢測,將與在所述第二時間間隔內(nèi)沒有發(fā)送請求消息的客戶端對應的長連接通道標識刪除,并斷開所述長連接通道標識對應的長連接通道,其中,所述第二時間間隔大于所述第一時間間隔。
6.如權利要求1-5中任一個所述的方法,還包括步驟所述客戶端每隔預設的第三時間間隔向服務器發(fā)送同步請求,所述服務器接收到所述同步請求后向所述客戶端返回未同步的數(shù)據(jù)。
7.—種適于和客戶端進行通信的服務器,包括存儲單元,適于存儲客戶端信息列表;通信接口,適于接收到客戶端發(fā)送的請求消息,獲取包含在所述請求消息中的所述客戶端的客戶端標識;通信控制器,適于確定客戶端信息列表中是否存儲了與所述客戶端標識相對應的長連接通道標識,如果存儲了長連接通道標識,則控制所述通信接口向所述客戶端返回指示長連接已建立的第一響應消息;如果未存儲長連接通道標識,則為所述客戶端分配一個長連接通道,將所述長連接通道的長連接通道標識以及所述客戶端標識存入所述客戶端信息列表中,并控制所述通信接口向所述客戶端返回指示長連接未建立的第二響應消息,其中,所述第二響應消息中包含所述長連接通道標識,該長連接通道標識指示客戶端根據(jù)所述長連接通道標識與所述服務器建立長連接;其中,所述通信接口還根據(jù)與客戶端之間建立的長連接,在服務器和客戶端之間傳輸消息。
8.如權利要求7所述的服務器,所述請求信息還包括當前在所述客戶端上運行的應用的應用標識,則所述通信接口具體用于將該應用相關的消息傳輸?shù)娇蛻舳恕?br>
9.如權利要求7所述的服務器,其中,所述客戶端每隔預設的第一時間間隔向服務器發(fā)送所述請求消息。
10.如權利要求7-9中任一個所述的服務器,所述存儲單元還適于在所述客戶端信息列表中與所述客戶端標識相關聯(lián)地存儲每次接收到所述客戶端發(fā)送的請求消息的時間。
11.如權利要求7-10中任一個所述的服務器,進一步包括鏈接管理器,適于每隔預設的第二時間間隔對所述客戶端信息列表中存儲的客戶端發(fā)送請求消息的時間間隔進行檢測,將與在所述第二時間間隔內(nèi)沒有發(fā)送請求消息的客戶端對應的長連接通道標識刪除,并斷開所述長連接通道標識對應的長連接通道,其中,所述第二時間間隔大于所述第一時間間隔。
12.如權利要求7-11中任一個所述的服務器,還包括同步單元,其接收所述客戶端每隔預設的第三時間間隔發(fā)送的同步請求,并根據(jù)所述同步請求向客戶端返回未同步的數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種在服務器處和客戶端進行通信的方法以及服務器,能夠使客戶端及時知曉長連接的建立情況以便與服務器進行通信。該方法包括接收客戶端發(fā)送的請求消息,獲取包含在請求消息中的客戶端的客戶端標識;確定客戶端信息列表中是否存儲了與客戶端標識相對應的長連接通道標識,如果存儲了長連接通道標識,則向客戶端返回用于指示長連接已建立的第一響應消息;如果未存儲長連接通道標識,則為客戶端分配一個長連接通道,將長連接通道的長連接通道標識以及客戶端標識存入客戶端信息列表中,并向客戶端返回用于指示長連接未建立的第二響應消息;以及根據(jù)與客戶端之間建立的長連接,在服務器和客戶端之間傳輸消息。
文檔編號H04L29/08GK102932352SQ20121043389
公開日2013年2月13日 申請日期2012年11月2日 優(yōu)先權日2012年11月2日
發(fā)明者左文建, 黃歡, 王曉峰, 楊濤, 呂本偉 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司