本申請涉及業(yè)務處理技術,具體涉及一種基于長連接的業(yè)務請求轉發(fā)方法及裝置。本申請同時涉及一種基于長連接的信息存儲方法及裝置,一種基于長連接的業(yè)務請求方法及裝置,以及一種基于長連接的業(yè)務處理系統(tǒng)。
背景技術:
隨著計算機和互聯(lián)網(wǎng)技術的發(fā)展,基于互聯(lián)網(wǎng)的各種通信工具,例如微信,QQ等即時通信軟件,成為了人們互相交流的主要方式。為了避免頻繁地與服務端建立連接、以及方便服務端進行消息的推送,即時通信軟件通常都是建立在長連接基礎之上的,包括基于websocket協(xié)議的通信工具也是如此。
為了保障整個軟件系統(tǒng)的有序、安全運行,對于一個通信工具來說,針對客戶端發(fā)送的業(yè)務請求,例如給好友發(fā)送消息,服務端通常需要先判定業(yè)務請求發(fā)起方是誰,即:驗證客戶端用戶的身份,只有當通過驗證后才能進一步將客戶端發(fā)送的消息發(fā)送給相應的業(yè)務服務端進行處理。
基于上述需求,現(xiàn)有技術通常采用如下處理方式,客戶端每次發(fā)送業(yè)務請求時,同時攜帶由客戶端用戶提供的、或者客戶端本地存儲的身份認證信息,例如:用戶名和密碼、或者令牌token,接入服務端將接收到的身份認證信息發(fā)送給認證服務端,并當認證服務端返回通過身份驗證的應答時,接入服務端才能夠將業(yè)務請求轉發(fā)給相應的業(yè)務服務端。
由此可見,由于基于長連接的客戶端在發(fā)送業(yè)務請求時,每次都帶有客戶端用戶的身份認證信息、并由服務端進行驗證,一方面由于多次傳輸重復的信息,增加客戶端流量,占用大量網(wǎng)絡帶寬,并且由于發(fā)送的信息較多,消耗大量客戶端時間;另一方面,由于每次都要由接入服務端請求認證服務端對客戶端用戶的身份進行驗證,增大服務端的工作負荷,降低服務端的效率,而為了緩解服務端的壓力增加服務端設備的數(shù)量、又會造成硬件成本的提升。
技術實現(xiàn)要素:
本申請實施例提供的一種基于長連接的業(yè)務請求轉發(fā)方法,以解決現(xiàn)有長連接客戶端重復發(fā)送用戶認證信息、以及服務端反復進行身份驗證導致的浪費網(wǎng)絡帶寬、效率低下等問題。本申請實施例還提供一種基于長連接的信息存儲方法和裝置,一種基于長連接的業(yè)務請求方法及裝置,以及一種基于長連接的業(yè)務處理系統(tǒng)。
本申請?zhí)峁┮环N基于長連接的業(yè)務請求轉發(fā)方法,包括:
通過長連接接收來自客戶端的業(yè)務請求;
通過查詢預先存儲的長連接驗證信息集合,判斷對應于所述長連接的客戶端用戶是否已在建立所述長連接時通過認證服務端的身份驗證;
若是,至少將所述業(yè)務請求發(fā)送給相應的業(yè)務服務端。
可選的,所述長連接驗證信息集合中的每條長連接驗證信息,是在建立相應長連接時通過以下步驟生成的:
從長連接建立請求中提取客戶端用戶的身份認證信息;
向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求;
接收所述認證服務端返回的至少包括身份驗證結果的應答信息,并當所述身份驗證結果為通過驗證時,存儲至少包括所述長連接標識的長連接驗證信息。
可選的,所述通過查詢預先存儲的長連接驗證信息集合,判斷對應于所述長連接的客戶端用戶是否已在建立所述長連接時通過認證服務端的身份驗證,包括:
根據(jù)所述長連接的標識,在預先存儲的長連接驗證信息集合中,查找對應的長連接驗證信息;
若找到,則判定對應于所述長連接的客戶端用戶已在建立所述長連接時通過所述身份驗證。
可選的,所述長連接驗證信息集合中的每條長連接驗證信息不僅包括長連接標識,還包括:客戶端設備信息;
當所述判斷操作的結果為是時,還執(zhí)行下述操作:
從對應于所述長連接的長連接驗證信息中,提取所述客戶端設備信息;
并在擬發(fā)送給所述業(yè)務服務端的數(shù)據(jù)中包括所述客戶端設備信息。
可選的,所述長連接驗證信息集合中的每條長連接驗證信息不僅包括長連接標識,還包括:由認證服務端提供的客戶端用戶信息;
當所述判斷操作的結果為是時,還執(zhí)行下述操作:
從對應于所述長連接的長連接驗證信息中,提取所述客戶端用戶信息;
并在擬發(fā)送給所述業(yè)務服務端的數(shù)據(jù)中包括所述客戶端用戶信息。
相應的,本申請還提供一種基于長連接的業(yè)務請求轉發(fā)裝置,包括:
業(yè)務請求接收單元,用于通過長連接接收來自客戶端的業(yè)務請求;
身份驗證判斷單元,用于通過查詢預先存儲的長連接驗證信息集合,判斷對應于所述長連接的客戶端用戶是否已在建立所述長連接時通過認證服務端的身份驗證;
業(yè)務請求轉發(fā)單元,用于當所述身份驗證判斷單元的輸出為是時,至少將所述業(yè)務請求發(fā)送給相應的業(yè)務服務端。
可選的,所述裝置還包括長連接驗證信息生成單元;
所述長連接驗證信息生成單元,包括:
身份認證信息提取子單元,用于從長連接建立請求中提取客戶端用戶的身份認證信息;
身份驗證請求發(fā)送子單元,用于向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求;
身份驗證結果判斷子單元,用于接收所述認證服務端返回的至少包括身份驗證結果的應答信息,并判斷所述身份驗證結果是否為通過驗證;
長連接驗證信息存儲子單元,用于當所述身份驗證結果判斷子單元的輸出為是時,存儲至少包括所述長連接標識的長連接驗證信息。
可選的,所述身份驗證判斷單元包括:
長連接驗證信息查找子單元,用于根據(jù)所述長連接的標識,在預先存儲的長連接驗證信息集合中,查找對應的長連接驗證信息;
身份驗證判斷執(zhí)行子單元,用于當所述長連接驗證信息查找子單元找到對應于所述長連接的長連接驗證信息時,判定發(fā)起所述業(yè)務請求的客戶端用戶已在建立所述長連接時通過所述身份驗證。
可選的,所述裝置包括:
客戶端設備信息提取單元,用于當所述身份驗證判斷單元的輸出為是時,從對應于所述長連接的長連接驗證信息中,提取所述客戶端設備信息,并在擬發(fā)送給所述業(yè)務服務端的數(shù)據(jù)中包括所述客戶端設備信息,隨后觸發(fā)所述業(yè)務請求轉發(fā)單元工作。
可選的,所述裝置包括:
客戶端用戶信息提取單元,用于當所述身份驗證判斷單元的輸出為是時,從對應于所述長連接的長連接驗證信息中,提取所述客戶端用戶信息,并在擬發(fā)送給所述業(yè)務服務端的數(shù)據(jù)中包括所述客戶端用戶信息,隨后觸發(fā)所述業(yè)務請求轉發(fā)單元工作。
此外,本申請還提供一種基于長連接的信息存儲方法,包括:
從長連接建立請求中提取客戶端用戶的身份認證信息;
向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求;
接收所述認證服務端返回的至少包括身份驗證結果的應答信息,并判斷所述身份驗證結果是否為通過驗證;
若是,存儲至少包括所述長連接標識的長連接驗證信息。
可選的,所述長連接建立請求中還攜帶:客戶端設備信息;
當所述身份驗證結果為通過驗證時,還執(zhí)行下述操作:
從所述長連接建立請求中提取客戶端設備信息;
并在擬存儲的長連接驗證信息中包括所述客戶端設備信息。
可選的,所述客戶端設備信息包括:網(wǎng)絡類型、和/或設備型號。
可選的,所述認證服務端返回的應答信息中還包括:認證服務端存儲的客戶端用戶信息;
當所述身份驗證結果為通過驗證時,還執(zhí)行下述操作:
從所述認證服務端返回的應答信息中提取所述客戶端用戶信息;
并在擬存儲的長連接驗證信息中包括所述客戶端用戶信息。
可選的,所述客戶端用戶信息包括:電子郵箱地址、和/或工作單位信息。
可選的,所述方法包括:
當檢測到所述長連接斷開時,刪除已存儲的、對應于所述長連接的長連接驗證信息。
可選的,所述客戶端用戶的身份認證信息包括:用戶名和密碼,或者,用于標識客戶端用戶身份的令牌。
可選的,所述長連接包括:基于TCP/IP協(xié)議的長連接。
相應的,本申請還提供一種基于長連接的信息存儲裝置,包括:
身份認證信息提取單元,用于從長連接建立請求中提取客戶端用戶的身份認證信息;
身份驗證請求發(fā)送單元,用于向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求;
身份驗證結果判斷單元,用于接收所述認證服務端返回的至少包括身份驗證結果的應答信息,并判斷所述身份驗證結果是否為通過驗證;
長連接驗證信息存儲單元,用于當所述身份驗證結果判斷單元的輸出為是時,存儲至少包括所述長連接標識的長連接驗證信息。
可選的,所述裝置包括:
客戶端設備信息提取單元,用于當所述身份驗證結果判斷單元的輸出為是時,從所述長連接建立請求中提取客戶端設備信息,在擬存儲的長連接驗證信息中包括所述客戶端設備信息,并觸發(fā)所述長連接驗證信息存儲單元工作。
可選的,所述裝置包括:
客戶端用戶信息提取單元,用于當所述身份驗證結果判斷單元的輸出為是時,從所述認證服務端返回的應答信息中提取所述客戶端用戶信息,在擬存儲的長連接驗證信息中包括所述客戶端用戶信息,并觸發(fā)所述長連接驗證信息存儲單元工作。
可選的,所述裝置包括:
長連接驗證信息刪除單元,用于當檢測到所述長連接斷開時,刪除已存儲的、對應于所述長連接的長連接驗證信息。
此外,本申請還提供一種基于長連接的業(yè)務請求方法,包括:
發(fā)送長連接建立請求,與接入服務端建立長連接;
通過所述長連接,向接入服務端發(fā)送包含業(yè)務請求的客戶端信息;
其中,僅在所述長連接建立請求中攜帶客戶端用戶的身份認證信息。
可選的,在長連接建立請求中還攜帶客戶端設備信息;
向所述接入服務端發(fā)送的客戶端信息中僅包含所述業(yè)務請求。
相應的,本申請還提供一種基于長連接的業(yè)務請求裝置,包括:
長連接建立請求發(fā)送單元,用于發(fā)送長連接建立請求,與接入服務端建立長連接;
客戶端信息發(fā)送單元,用于通過所述長連接,向接入服務端發(fā)送包含業(yè)務請求的客戶端信息;
其中,僅在所述長連接建立請求發(fā)送單元發(fā)送的長連接建立請求中攜帶客戶端用戶的身份認證信息。
此外,本申請還提供一種基于長連接的業(yè)務處理系統(tǒng),包括:根據(jù)上述任意一項所述的基于長連接的業(yè)務請求轉發(fā)裝置,根據(jù)上述任意一項所述的基于長連接的信息存儲裝置,根據(jù)上述任意一項所述的基于長連接的業(yè)務請求裝置,用于提供身份驗證服務的認證服務器,以及用于處理業(yè)務請求的業(yè)務服務器。
與現(xiàn)有技術相比,本申請具有以下優(yōu)點:
本申請?zhí)峁┑幕陂L連接的業(yè)務請求轉發(fā)方法,在通過長連接接收客戶端業(yè)務請求后,直接查找已存儲的長連接驗證信息,即可獲知對應于所述長連接的客戶端用戶是否已在建立長連接時通過了身份驗證,并在通過驗證時,將業(yè)務請求轉發(fā)給相應的業(yè)務服務端。
利用本申請?zhí)峁┑纳鲜龇椒?,僅需在建立長連接的時候與認證服務端進行交互,以驗證客戶端用戶的身份,在其他通過長連接接收業(yè)務請求的場景下,直接利用已存儲的長連接驗證信息,進行判斷并執(zhí)行相應的轉發(fā)操作即可。對于長連接的客戶端,由于無需每次都攜帶客戶端用戶的身份認證信息,減少數(shù)據(jù)傳輸時間以及對網(wǎng)絡帶寬的占用;對于服務端,可以減少接入服務端和認證服務端之間的交互次數(shù)以及對帶寬的占用,減輕服務端的工作壓力,提高處理效率。
附圖說明
圖1是本申請的一種基于長連接的信息存儲方法的實施例的流程圖;
圖2是本申請的一種基于長連接的信息存儲裝置的實施例的示意圖;
圖3是本申請的一種基于長連接的業(yè)務請求轉發(fā)方法的實施例的流程圖;
圖4是本申請的一種基于長連接的業(yè)務請求轉發(fā)裝置的實施例的示意圖;
圖5是本申請的一種基于長連接的業(yè)務請求方法的實施例的流程圖;
圖6是本申請的一種基于長連接的業(yè)務請求裝置的實施例的示意圖;
圖7是本申請的一種基于長連接的業(yè)務處理系統(tǒng)的實施例的示意圖。
具體實施方式
在下面的描述中闡述了很多具體細節(jié)以便于充分理解本申請。但是,本申請能夠以很多不同于在此描述的其它方式來實施,本領域技術人員可以在不違背本申請內涵的情況下做類似推廣,因此,本申請不受下面公開的具體實施的限制。
在本申請中,分別提供了一種基于長連接的業(yè)務請求轉發(fā)方法及裝置,一種基于長連接的信息存儲方法及裝置,一種基于長連接的業(yè)務請求方法及裝置,以及一種基于長連接的業(yè)務處理系統(tǒng)。其中,所述基于長連接的業(yè)務請求轉發(fā)方法以及基于長連接的信息存儲方法,通常在接入服務端實施,所述基于長連接的業(yè)務請求方法通常在客戶端實施。
本申請技術方案的核心在于,在建立長連接的過程中,如果長連接對端的客戶端用戶通過了認證服務端的身份驗證,則存儲對應于所述長連接的長連接驗證信息;后續(xù)接收到來自所述長連接的業(yè)務請求后,通過查找已存儲的長連接驗證信息,即可獲知所述長連接的客戶端用戶已在建立長連接之初通過了身份驗證,因此可以直接將業(yè)務請求轉發(fā)給相應的業(yè)務服務端。
與現(xiàn)有技術相比較,由于現(xiàn)有技術每次針對來自長連接的業(yè)務請求,需要重復執(zhí)行與認證服務端之間的身份驗證交互操作,導致客戶端每次發(fā)送業(yè)務請求時都要攜帶重復的身份驗證信息,而服務端工作負荷大、處理效率低。采用本申請?zhí)峁┑募夹g方案,通過在建立長連接時存儲表征客戶端用戶已通過身份驗證的長連接驗證信息,解決了現(xiàn)有技術存在的上述問題,客戶端僅需在建立長連接時攜帶客戶端用戶的身份驗證信息,減少了客戶端的數(shù)據(jù)發(fā)送量以及耗時,服務端也無需執(zhí)行重復的身份驗證操作,減輕工作負荷,提高處理效率。
在下面的實施例中,對本申請?zhí)峁┑母鞣椒ā⒀b置以及系統(tǒng)逐一進行詳細 說明。為了便于理解本申請的技術方案,先對本申請?zhí)峁┑幕陂L連接的信息存儲方法的實施過程進行說明。請參考圖1,其為本申請的一種基于長連接的信息存儲方法的實施例的流程圖,所述方法通常在接入服務端實施。所述方法包括如下步驟:
步驟101、從長連接建立請求中提取客戶端用戶的身份認證信息。
客戶端在與業(yè)務服務端交互之前,通常先與接入服務端建立長連接。所述長連接通常是指,能夠長期保持連接狀態(tài)的數(shù)據(jù)連接,即:客戶端與接入服務端在完成一次交互操作后可以不立即釋放連接,后續(xù)的交互操作仍然可以繼續(xù)使用這個連接,在沒有數(shù)據(jù)交互的期間,雙方可以通過發(fā)送鏈路檢測包的方式保持連接狀態(tài)(即,通常所述的心跳機制)。其中,基于TCP/IP協(xié)議的長連接是目前即時通訊軟件經(jīng)常采用的長連接形式。
處于安全性考慮,接入服務端通常需要對客戶端用戶的身份進行驗證,并在驗證通過后,才能與客戶端建立長連接,因此客戶端發(fā)送的長連接建立請求中通常會攜帶客戶端用戶的身份認證信息,接入服務端在接收到客戶端發(fā)送的連接建立請求后,從中提取所述身份認證信息。
所述身份認證信息的形式可以有多種,可以是:用戶名和密碼,也可以是用于標識客戶端用戶身份的令牌(token—包含時間戳信息的身份認證字符串)。
通常在首次建立長連接時,客戶端可以提示用戶輸入用戶名和密碼,并將客戶端用戶輸入的相應信息隨同長連接建立請求一并發(fā)送給接入服務端,由接入服務端轉發(fā)給認證服務端,并對客戶端用戶的身份進行驗證;在首次利用用戶名和密碼建立長連接后,服務端(例如:認證服務端)可以為長連接的客戶端用戶分配一個具有時效限制的令牌,用于標識客戶端用戶的身份,客戶端通常會在本地存儲所述令牌,并在需要重新建立長連接時,直接在長連接建立請求中攜帶所述令牌,從而避免反復讓客戶端用戶輸入用戶名和密碼,影響用戶的使用體驗。
步驟102、向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求。
從長連接建立請求中提取客戶端用戶的身份認證信息后,向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求,由認證服務端對所述長連接的客戶端用戶的身份進行驗證。
通??蛻舳擞脩粼诶每蛻舳伺c服務端進行交互之前,可以先通過注冊過 程,向認證服務端提供自己的個人信息,例如:設置用戶名、密碼、以及其他客戶端用戶信息,例如:電子郵箱地址、工作單位信息等,注冊成功后,認證服務端就會存儲這些客戶端用戶信息,在認證服務端為客戶端用戶分配token后,也會將token與相應的客戶端用戶信息對應存儲起來。當認證服務端接收到接入服務端發(fā)送的身份認證請求后,則會利用已存儲的客戶端用戶信息對身份認證請求中攜帶的身份認證信息進行驗證,如果所述身份認證信息對應于已經(jīng)注冊的有效用戶,則返回通過驗證應答,否則返回未通過驗證應答。
步驟103、接收所述認證服務端返回的至少包括身份驗證結果的應答信息,并判斷所述身份驗證結果是否為通過驗證,若是,執(zhí)行步驟104。
優(yōu)選地,對于驗證通過的情況,認證服務端返回的信息可以不僅包括驗證結果,還包括相應的客戶端用戶信息,也稱為認證過的用戶信息,包括:電子郵箱地址、工作單位信息等,供接入服務端進行存儲,請參見后續(xù)步驟104中的相應說明。
步驟104、存儲至少包括所述長連接標識的長連接驗證信息。
執(zhí)行到本步驟,說明對應于長連接的客戶端用戶已通過認證服務端的身份驗證,則可以存儲對應于所述長連接的長連接驗證信息,所述長連接驗證信息中至少包括:所述長連接的標識。由于接入服務端通常與眾多的客戶端保持長連接狀態(tài),為了對每條長連接加以區(qū)分,可以用預設形式的信息來唯一標識每一條長連接,即:本實施例所述的長連接標識,例如:可以用長連接的客戶端端口號與接入服務端端口號的組合作為所述長連接標識。
優(yōu)選地,如果在客戶端發(fā)送的長連接建立請求中還攜帶客戶端設備信息,例如:網(wǎng)絡類型、設備型號等,那么當所述身份驗證結果為通過驗證時,還可以從所述長連接建立請求中提取客戶端設備信息,一并存儲到所述長連接驗證信息中,即長連接驗證信息中包括:長連接標識以及客戶端設備信息。
優(yōu)選地,如果認證服務端在返回通過驗證應答時,還同時返回了客戶端用戶信息,那么可以從所述認證服務端返回的應答中提取客戶端用戶信息,一并存儲到所述長連接驗證信息中,即長連接驗證信息包括:長連接標識以及客戶端用戶信息。
在具體實施中,上述兩種優(yōu)選實施方式可以各自單獨應用,也可以結合起來應用,可以將長連接建立請求中攜帶的客戶端設備信息、以及認證服務端返 回的客戶端用戶信息一并存儲到長連接驗證信息中能夠,即長連接驗證信息包括:長連接標識、客戶端設備信息、以及客戶端用戶信息。
接入服務端針對接收到的每個長連接建立請求都采用上述方式進行處理,就會生成包括若干條長連接驗證信息的長連接驗證信息集合,對于后續(xù)來自長連接的業(yè)務請求,可以直接在該集合中進行查找、以判斷長連接在建立之初是否已通過了對客戶端用戶身份的驗證,從而為減少客戶端發(fā)送的數(shù)據(jù)量(無需每次發(fā)送身份認證信息)、以及減少服務端之間的交互提供了可能性。
需要說明的是,在具體實施時,如果檢測到某長連接斷開,則可以刪除已存儲的、對應于所述已斷開的長連接的長連接驗證信息。例如:接入服務端在預設時間段內沒有接收到來自長連接客戶端的心跳數(shù)據(jù)包,或者雖然接收到心跳數(shù)據(jù)包,但是在預設時間段內客戶端未使用長連接發(fā)送任何業(yè)務請求,在這兩種情況下都可以斷開長連接,同時刪除對應于該長連接的長連接驗證信息,從而實現(xiàn)對長連接驗證信息的有效管理,避免占用過多的存儲空間。
在上述的實施例中,提供了一種基于長連接的信息存儲方法,與之相對應的,本申請還提供一種基于長連接的信息存儲裝置。請參看圖2,其為本申請的一種基于長連接的信息存儲裝置的實施例的示意圖。由于裝置實施例基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。
本實施例的一種基于長連接的信息存儲裝置,包括:身份認證信息提取單元201,用于從長連接建立請求中提取客戶端用戶的身份認證信息;身份驗證請求發(fā)送單元202,用于向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求;身份驗證結果判斷單元203,用于接收所述認證服務端返回的至少包括身份驗證結果的應答信息,并判斷所述身份驗證結果是否為通過驗證;長連接驗證信息存儲單元204,用于當所述身份驗證結果判斷單元的輸出為是時,存儲至少包括所述長連接標識的長連接驗證信息。
可選的,所述裝置包括:
客戶端設備信息提取單元,用于當所述身份驗證結果判斷單元的輸出為是時,從所述長連接建立請求中提取客戶端設備信息,在擬存儲的長連接驗證信息中包括所述客戶端設備信息,并觸發(fā)所述長連接驗證信息存儲單元工作。
可選的,所述裝置包括:
客戶端用戶信息提取單元,用于當所述身份驗證結果判斷單元的輸出為是時,從所述認證服務端返回的應答信息中提取所述客戶端用戶信息,在擬存儲的長連接驗證信息中包括所述客戶端用戶信息,并觸發(fā)所述長連接驗證信息存儲單元工作。
可選的,所述裝置包括:
長連接驗證信息刪除單元,用于當檢測到所述長連接斷開時,刪除已存儲的、對應于所述長連接的長連接驗證信息。
此外,本申請還提供一種基于長連接的業(yè)務請求轉發(fā)方法,所述方法通常在接入服務端實施。請參考圖3,其為本申請?zhí)峁┑囊环N基于長連接的業(yè)務請求轉發(fā)方法的實施例的流程圖,本實施例與上述方法實施例步驟相同的部分不再贅述,下面重點描述不同之處。本申請?zhí)峁┑囊环N基于長連接的業(yè)務請求轉發(fā)方法包括:
步驟301、通過長連接接收來自客戶端的業(yè)務請求。
客戶端與接入服務端建立長連接后,客戶端可以根據(jù)接收到的用戶操作將相應的業(yè)務請求發(fā)送給接入服務端,相應的,本步驟就會接收到該業(yè)務請求。
例如:用戶在客戶端顯示的聊天界面中點擊下拉箭頭,希望看到更多聊天信息時,客戶端就會相應地向服務端發(fā)送拉取會話的業(yè)務請求,接入服務端就會接收到該業(yè)務請求。
步驟302、通過查詢預先存儲的長連接驗證信息集合,判斷對應于所述長連接的客戶端用戶是否已在建立所述長連接時通過認證服務端的身份驗證;若是,則執(zhí)行步驟303。
所述長連接驗證信息集合包含若干條長連接驗證信息,每條長連接驗證信息都與處于連接狀態(tài)的一條長連接相對應,所述長連接驗證信息是在建立相應長連接時通過以下步驟生成的:
從長連接建立請求中提取客戶端用戶的身份認證信息;向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求;接收所述認證服務端返回的至少包括身份驗證結果的應答信息,并當所述身份驗證結果為通過驗證時,存儲至少包括所述長連接標識的長連接驗證信息。關于該過程的具體實施方式,已經(jīng)在之前提供的基于長連接的信息存儲方法的實施例中進行了說明,此處不再贅述。
本步驟可以根據(jù)接收到業(yè)務請求的長連接的標識信息,在預先存儲的長連接驗證信息集合中,查找對應的長連接驗證信息;若找到,則說明該長連接對應的客戶端用戶已在建立所述長連接時通過身份驗證,則無需再經(jīng)由認證服務端進行重復的身份驗證,可以直接執(zhí)行步驟303,將所述業(yè)務請求發(fā)送給相應的業(yè)務服務端。
在現(xiàn)有技術中,由于接入服務端沒有針對通過身份驗證的長連接存儲長連接驗證信息,因此不僅在建立長連接時需要將客戶端用戶的身份認證信息發(fā)送給認證服務端進行驗證,而且在每次基于長連接接收到業(yè)務請求時,都需要執(zhí)行同樣的身份驗證過程,只有通過了身份驗證,才能將業(yè)務請求轉發(fā)給相應的業(yè)務服務端。采用這種方式,不僅要求客戶端每次發(fā)送業(yè)務請求時攜帶客戶端用戶的身份驗證信息,而且接入服務端每次都要與認證服務端進行交互,問題的關鍵在于,客戶端在已建立好的長連接上發(fā)送業(yè)務請求所攜帶的身份認證信息通常都是相同的,例如:都用存儲在客戶端本地的令牌token作為所述身份認證信息,因此導致客戶端大量發(fā)送重復信息,而認證服務端則執(zhí)行了大量重復的驗證操作。
本實施例中的技術方案,由于在建立長連接時存儲了長連接驗證信息,因此后續(xù)通過長連接接收業(yè)務請求后,無需再與認證服務端交互,而是通過查詢長連接驗證信息即可獲知長連接對應的客戶端用戶是否已通過身份驗證,并在通過驗證的情況下執(zhí)行轉發(fā)業(yè)務請求的操作。采用這種方式,一方面不要長連接客戶端每次在發(fā)送業(yè)務請求的同時必須攜帶身份認證信息,可以減少數(shù)據(jù)傳輸時間以及對網(wǎng)絡帶寬的占用,另一方面可以減少接入服務端和認證服務端之間的交互次數(shù)以及對帶寬的占用,減輕服務端的工作壓力,提高處理效率。
步驟303、至少將所述業(yè)務請求發(fā)送給相應的業(yè)務服務端。
本步驟可以根據(jù)業(yè)務請求的類型進行分流,將業(yè)務請求發(fā)送給負責處理的相應的業(yè)務服務端。例如:業(yè)務請求為給好友發(fā)送消息,那么可以將該業(yè)務請求發(fā)送給消息發(fā)送服務端,如果業(yè)務請求為獲取更多聊天信息,可以將該業(yè)務請求發(fā)送給拉取會話服務端,業(yè)務請求為顯示好友信息,則可以將該業(yè)務請求發(fā)送給拉取好友服務端,等等。
優(yōu)選地,如果在步驟302查找到的長連接驗證信息中不僅包括長連接標識,還包括客戶端設備信息,則可以從所述長連接驗證信息中提取所述客戶端設備 信息,并將所述業(yè)務請求以及所述客戶端設備信息,一起發(fā)送給相應的業(yè)務服務端,以供業(yè)務服務端在處理所述業(yè)務請求時參考。例如:根據(jù)客戶端設備的型號或者平臺類型采用相應的消息格式推送消息,從而能夠為客戶端用戶提供更完善的服務。
現(xiàn)有技術中,由于接入服務端沒有存儲長連接驗證信息,也沒有存儲客戶端設備信息,那么為了實現(xiàn)向業(yè)務服務端提供客戶端設備信息的功能,客戶端每次通過長連接向接入服務端發(fā)送業(yè)務請求時,都需要攜帶客戶端設備信息,然后由接入服務端轉發(fā)給業(yè)務服務端,導致客戶端數(shù)據(jù)傳輸量增大,占用額外的網(wǎng)絡帶寬。
而本實施例提供的技術方案,由于接入服務端在長連接驗證信息中存儲了處于長連接對端的客戶端設備信息、并且在向業(yè)務服務端轉發(fā)業(yè)務請求時提取所述客戶端設備信息一并轉發(fā),因此在實現(xiàn)向業(yè)務服務端提供客戶端設備信息這一功能的基礎上,客戶端僅需在建立長連接時攜帶客戶端設備信息即可,從而可以減少數(shù)據(jù)傳輸量、減少對網(wǎng)絡帶寬的占用,減少發(fā)送數(shù)據(jù)的耗時。
優(yōu)選地,如果在步驟302查找到的長連接驗證信息中不僅包括長連接標識,還包括由認證服務端提供的客戶端用戶信息(通常稱為認證過的客戶端用戶信息),則可以從所述長連接驗證信息中提取所述客戶端用戶信息,并將所述業(yè)務請求以及所述客戶端用戶信息,一起發(fā)送給相應的業(yè)務服務端,以供業(yè)務服務端在處理所述業(yè)務請求時參考。例如:業(yè)務服務端可以根據(jù)客戶端用戶信息對客戶端用戶進行分類,進行有針對性的處理,或者有針對性地推送信息、提供推薦服務等,從而能夠為客戶端用戶提供更完善的服務。
現(xiàn)有技術中,由于接入服務端沒有存儲長連接驗證信息,也沒有存儲客戶端用戶信息,當接入服務端將業(yè)務請求轉發(fā)給相應的業(yè)務服務端后,業(yè)務服務端為了獲取客戶端用戶信息,通常需要主動去認證服務端拉取客戶端用戶信息。
而本實施例提供的技術方案,由于接入服務端在長連接驗證信息中存儲了處于長連接對端的客戶端用戶信息、并且在向業(yè)務服務端轉發(fā)業(yè)務請求時提取所述客戶端用戶信息一并轉發(fā),因此業(yè)務服務端無需再次執(zhí)行從認證服務端拉取客戶端用戶信息的操作,減少了業(yè)務服務端和認證服務端之間的交互,減輕認證服務端的工作壓力,同時也提高業(yè)務服務端的業(yè)務處理效率。
在具體實施中,上述兩種優(yōu)選實施方式可以各自單獨應用,也可以結合起 來應用,即,如果長連接驗證信息中既包括客戶端設備信息、又包括客戶端設備信息,則可以提取這兩種信息,并與業(yè)務請求一并轉發(fā)給業(yè)務服務端,供業(yè)務服務端處理業(yè)務請求時參考。
至此,通過步驟301-303,對基于長連接的業(yè)務請求轉發(fā)方法的實施方式進行了詳細描述。通過上述描述可以看出,采用上述方法,在通過長連接接收到業(yè)務請求的場景下,無需調用認證服務端對客戶端用戶進行身份驗證,而是直接利用已存儲的長連接驗證信息,進行判斷并執(zhí)行相應的轉發(fā)操作即可,從而可以減少接入服務端和認證服務端之間的交互次數(shù)以及對帶寬的占用,減輕服務端的工作壓力,提高處理效率。
在上述的實施例中,提供了一種基于長連接的業(yè)務請求轉發(fā)方法,與之相對應的,本申請還提供一種基于長連接的業(yè)務請求轉發(fā)裝置。請參看圖4,其為本申請的一種基于長連接的業(yè)務請求轉發(fā)裝置的實施例的示意圖。由于裝置實施例基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。
本實施例的一種基于長連接的業(yè)務請求轉發(fā)裝置,包括:業(yè)務請求接收單元401,用于通過長連接接收來自客戶端的業(yè)務請求;身份驗證判斷單元402,用于通過查詢預先存儲的長連接驗證信息集合,判斷對應于所述長連接的客戶端用戶是否已在建立所述長連接時通過認證服務端的身份驗證;業(yè)務請求轉發(fā)單元403,用于當所述身份驗證判斷單元的輸出為是時,至少將所述業(yè)務請求發(fā)送給相應的業(yè)務服務端。
可選的,所述裝置還包括長連接驗證信息生成單元;
所述長連接驗證信息生成單元,包括:
身份認證信息提取子單元,用于從長連接建立請求中提取客戶端用戶的身份認證信息;
身份驗證請求發(fā)送子單元,用于向認證服務端發(fā)送攜帶所述身份認證信息的身份驗證請求;
身份驗證結果判斷子單元,用于接收所述認證服務端返回的至少包括身份驗證結果的應答信息,并判斷所述身份驗證結果是否為通過驗證;
長連接驗證信息存儲子單元,用于當所述身份驗證結果判斷子單元的輸出為是時,存儲至少包括所述長連接標識的長連接驗證信息。
可選的,所述身份驗證判斷單元包括:
長連接驗證信息查找子單元,用于根據(jù)所述長連接的標識,在預先存儲的長連接驗證信息集合中,查找對應的長連接驗證信息;
身份驗證判斷執(zhí)行子單元,用于當所述長連接驗證信息查找子單元找到對應于所述長連接的長連接驗證信息時,判定發(fā)起所述業(yè)務請求的客戶端用戶已在建立所述長連接時通過所述身份驗證。
可選的,所述裝置包括:
客戶端設備信息提取單元,用于當所述身份驗證判斷單元的輸出為是時,從對應于所述長連接的長連接驗證信息中,提取所述客戶端設備信息,并在擬發(fā)送給所述業(yè)務服務端的數(shù)據(jù)中包括所述客戶端設備信息,隨后觸發(fā)所述業(yè)務請求轉發(fā)單元工作。
可選的,所述裝置包括:
客戶端用戶信息提取單元,用于當所述身份驗證判斷單元的輸出為是時,從對應于所述長連接的長連接驗證信息中,提取所述客戶端用戶信息,并在擬發(fā)送給所述業(yè)務服務端的數(shù)據(jù)中包括所述客戶端用戶信息,隨后觸發(fā)所述業(yè)務請求轉發(fā)單元工作。
此外,本申請還提供一種基于長連接的業(yè)務請求方法,所述方法通常在客戶端實施,與實施了上述實施例描述的基于長連接的信息存儲方法及業(yè)務請求轉發(fā)方法的接入服務端相互配合,可以達到節(jié)省客戶端數(shù)據(jù)流量、減少傳輸耗時的目的。請參考圖5,其為本申請?zhí)峁┑囊环N基于長連接的業(yè)務請求方法的實施例的流程圖,本實施例與上述方法實施例步驟相同的部分不再贅述,下面重點描述不同之處。本申請?zhí)峁┑囊环N基于長連接的業(yè)務請求方法包括:
步驟501、發(fā)送長連接建立請求,與接入服務端建立長連接。
客戶端在發(fā)送業(yè)務請求之前,通常先與接入服務端建立長連接。在具體實施時,可以遵循相關的協(xié)議發(fā)送長連接建立請求,例如:采用基于TCP/IP的長連接,則可以遵循TCP/IP協(xié)議設定的規(guī)范,來實施長連接的建立過程,從而與接入服務端建立長連接。
為了滿足服務端對長連接客戶端用戶進行身份驗證的需求,在發(fā)送所述長連接建立請求時需要攜帶客戶端用戶的身份認證信息,當認證服務端驗證通過 后,接入服務端存儲針對所述長連接的長連接驗證信息。
具體實施時,對于首次建立長連接,可以通過客戶端的交互界面提示用戶輸入用戶名和密碼,然后在長連接建立請求中攜帶所述用戶名和密碼,經(jīng)過認證服務端驗證后,可以接收到由認證服務端分配的、用于標識所述用戶身份的令牌(token),客戶端可以將令牌存儲在本地;后續(xù)建立長連接時,則可以在長連接建立請求中攜帶所述令牌即可。
進一步地,為了向服務端提供客戶端設備的相關信息,還可以在長連接建立請求中攜帶客戶端設備信息。相應地,接入服務端會在存儲的長連接驗證信息中包括所述客戶端設備信息。
步驟502、通過所述長連接,向接入服務端發(fā)送包含業(yè)務請求的客戶端信息。
本步驟可以根據(jù)接收到的用戶操作,通過已建立好的長連接,向接入服務端發(fā)送包含業(yè)務請求的客戶端信息。例如:用戶在聊天應用的客戶端界面中輸入消息,并點擊“向好友發(fā)送消息”按鈕,則客戶端可以通過已建立好的長連接,向接入服務端發(fā)送“發(fā)送消息”這一業(yè)務請求。
由于接入服務端在建立所述長連接時已經(jīng)存儲了長連接驗證信息,因此在發(fā)送給接入服務器的客戶端信息中不包括客戶端用戶的身份認證信息,從而減少客戶端發(fā)送的數(shù)據(jù)量。所述客戶端信息中可以包括:業(yè)務請求,還可以包括其他信息,例如:客戶端設備信息。
優(yōu)選地,如果步驟502建立所述長連接時,在長連接建立請求中攜帶了客戶端設備信息,并且接入服務端在存儲對應于所述長連接的長連接驗證信息中包括了所述客戶端設備信息,那么本步驟發(fā)送的客戶端信息中可以僅包括業(yè)務請求,不包括客戶端設備信息,進一步減少客戶端發(fā)送的數(shù)據(jù)量。
至此,通過步驟501-502,對本實施例提供的基于長連接的業(yè)務請求方法的實施方式進行了說明。由于接入服務端針對接收到的每個業(yè)務請求,根據(jù)在建立長連接時存儲的長連接驗證信息,判斷相對應的客戶端用戶是否已通過了身份驗證,因此長連接客戶端僅需要在建立長連接時攜帶客戶端用戶的身份驗證信息,此后基于長連接發(fā)送業(yè)務請求時則不必重復攜帶該信息,減少客戶端發(fā)送數(shù)據(jù)的耗時以及對網(wǎng)絡帶寬的占用。
在上述的實施例中,提供了一種基于長連接的業(yè)務請求方法,與之相對應的,本申請還提供一種基于長連接的業(yè)務請求裝置。請參看圖6,其為本申請的 一種基于長連接的業(yè)務請求裝置的實施例的示意圖。由于裝置實施例基本相似于方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。
本實施例的一種基于長連接的業(yè)務請求裝置,包括:長連接建立請求發(fā)送單元601,用于發(fā)送長連接建立請求,與接入服務端建立長連接;客戶端信息發(fā)送單元602,用于通過所述長連接,向接入服務端發(fā)送包含業(yè)務請求的客戶端信息;其中,僅在所述長連接建立請求發(fā)送單元發(fā)送的長連接建立請求中攜帶客戶端用戶的身份認證信息。
此外,本申請還提供一種基于長連接的業(yè)務處理系統(tǒng),如圖7所示,該系統(tǒng)包括上述實施例所述的基于長連接的信息存儲裝置701,基于長連接的業(yè)務請求轉發(fā)裝置702,基于長連接的業(yè)務請求裝置703,用于提供身份驗證服務的認證服務器704,以及用于處理業(yè)務請求的業(yè)務服務器705。所述基于長連接的信息存儲裝置、和所述基于長連接的業(yè)務請求轉發(fā)裝置,可以部署于接入服務器,也可以部署在其他能夠實現(xiàn)本申請?zhí)峁┑幕陂L連接的信息存儲方法及業(yè)務請求轉發(fā)方法的設備上;所述基于長連接的業(yè)務請求裝置可以部署于移動通訊設備、個人電腦、PAD、iPad等多種客戶端設備。
例如,所述基于長連接的信息存儲裝置和所述基于長連接的業(yè)務請求轉發(fā)裝置部署于接入服務器,所述基于長連接的業(yè)務請求裝置部署于智能手機上。智能手機向接入服務器發(fā)送長連接建立請求,所述請求中攜帶手機用戶的身份認證信息;接入服務器將接收到的身份驗證信息發(fā)送給認證服務器,并接收認證服務器返回的通過驗證應答,然后存儲對應于所述長連接的長連接驗證信息;智能手機通過建立好的長連接發(fā)送業(yè)務請求,接入服務端根據(jù)長連接標識在預先存儲的長連接驗證信息集合中找到對應的長連接驗證信息,獲知所述長連接的客戶端用戶已經(jīng)在建立所述長連接時通過了認證服務器的身份驗證,因此直接將接收到的業(yè)務請求發(fā)送給相應的業(yè)務服務器。
上述例子僅僅是示意性的,在其他的實施方式中,也可以采用不同的部署方式和實施方式,只要能夠實現(xiàn)本申請所述的基于長連接的業(yè)務處理系統(tǒng)的整體功能,就都在本申請的保護范圍之內。
本申請雖然以較佳實施例公開如上,但其并不是用來限定本申請,任何本領域技術人員在不脫離本申請的精神和范圍內,都可以做出可能的變動和修改,因此本申請的保護范圍應當以本申請權利要求所界定的范圍為準。
在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網(wǎng)絡接口和內存。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內存是計算機可讀介質的示例。
1、計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質的例子包括,但不限于相變內存(PRAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitory media),如調制的數(shù)據(jù)信號和載波。
2、本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。