本發(fā)明涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,尤其涉及一種基于代理的數(shù)據(jù)通信系統(tǒng)和方法。
背景技術(shù):
近年來(lái),隨著機(jī)器人技術(shù)的發(fā)展和人工智能研究不斷深入,智能移動(dòng)機(jī)器人在人類生活中扮演越來(lái)越重要的角色,在諸多領(lǐng)域得到廣泛應(yīng)用。
為了為用戶提供更加智能的服務(wù),在機(jī)器人中往往會(huì)設(shè)置多種應(yīng)用程序。機(jī)器人在使用的過程中,可能由于機(jī)器故障、應(yīng)用程序運(yùn)行異常等問題,往往需要運(yùn)維人員人工去到現(xiàn)場(chǎng)進(jìn)行維護(hù)。比如,運(yùn)維人員去到現(xiàn)場(chǎng),了解異常問題出現(xiàn)的原因、場(chǎng)景,當(dāng)是應(yīng)用程序異常時(shí),需拉取錯(cuò)誤日志反饋給相應(yīng)的開發(fā)人員,開發(fā)人員修復(fù)后重新安裝該應(yīng)用程序到機(jī)器人中,解決問題的時(shí)效性變得很低,大大降低了用戶體驗(yàn)度。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例提供一種基于代理的數(shù)據(jù)通信系統(tǒng)和方法,用以通過代理實(shí)現(xiàn)控制后臺(tái)與終端設(shè)備中的應(yīng)用程序間的及時(shí)通信,以便于控制后臺(tái)及時(shí)發(fā)現(xiàn)終端設(shè)備的異常狀況進(jìn)行相應(yīng)處理。
本發(fā)明實(shí)施例提供一種基于代理的數(shù)據(jù)通信系統(tǒng),包括:
控制后臺(tái),終端設(shè)備,安裝于所述終端設(shè)備中的多個(gè)應(yīng)用程序,安裝于所述終端設(shè)備中的代理;其中,
所述代理中設(shè)置有所述多個(gè)應(yīng)用程序的標(biāo)識(shí),所述代理用于根據(jù)所述應(yīng)用程序的標(biāo)識(shí)分別與所述多個(gè)應(yīng)用程序建立通信連接;
所述代理中存儲(chǔ)有所述控制后臺(tái)的通信地址,所述代理還用于根據(jù)所述控制后臺(tái)的通信地址與所述控制后臺(tái)建立通信連接;
所述代理中設(shè)置有服務(wù)接口集合,所述服務(wù)接口集合中的服務(wù)接口對(duì)應(yīng)于所述多個(gè)應(yīng)用程序提供的服務(wù)集合。
本發(fā)明實(shí)施例提供一種基于代理的數(shù)據(jù)通信方法,包括:
根據(jù)預(yù)先存儲(chǔ)的控制后臺(tái)的通信地址,與所述控制后臺(tái)建立第一通信連接;
根據(jù)預(yù)先存儲(chǔ)的所屬終端設(shè)備中的多個(gè)應(yīng)用程序的標(biāo)識(shí),分別與所述多個(gè)應(yīng)用程序建立第二通信連接;
根據(jù)所述第一通信連接、所述第二通信連接和預(yù)設(shè)服務(wù)接口集合,進(jìn)行所述控制后臺(tái)與所述多個(gè)應(yīng)用程序之間的數(shù)據(jù)通信處理,所述預(yù)設(shè)服務(wù)接口集合中的服務(wù)接口對(duì)應(yīng)于所述多個(gè)應(yīng)用程序提供的服務(wù)集合。
本發(fā)明實(shí)施例提供的基于代理的數(shù)據(jù)通信系統(tǒng)和方法,該系統(tǒng)包括:控制后臺(tái),終端設(shè)備,安裝于終端設(shè)備中的多個(gè)應(yīng)用程序和代理。其中,代理中設(shè)置有多個(gè)應(yīng)用程序的標(biāo)識(shí),以根據(jù)各應(yīng)用程序的標(biāo)識(shí)分別與多個(gè)應(yīng)用程序建立通信連接;并且,代理中存儲(chǔ)有控制后臺(tái)的通信地址,以根據(jù)控制后臺(tái)的通信地址與控制后臺(tái)建立通信連接。另外,代理中設(shè)置有對(duì)應(yīng)于終端設(shè)備中多個(gè)應(yīng)用程序提供的服務(wù)集合的服務(wù)接口集合,從而,基于代理與控制后臺(tái)的通信連接,代理與應(yīng)用程序的通信連接以及各服務(wù)接口,可以通過代理來(lái)實(shí)現(xiàn)控制后臺(tái)與終端設(shè)備中應(yīng)用程序的及時(shí)性地?cái)?shù)據(jù)通信,以便于控制后臺(tái)及時(shí)發(fā)現(xiàn)終端設(shè)備的異常狀況進(jìn)行相應(yīng)處理。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1a為本發(fā)明實(shí)施例提供的基于代理的數(shù)據(jù)通信系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖;
圖1b為在圖1a所示系統(tǒng)的場(chǎng)景下的一種數(shù)據(jù)通信方式的信令交互圖;
圖1c為在圖1a所示系統(tǒng)的場(chǎng)景下的另一種數(shù)據(jù)通信方式的信令交互圖;
圖1d為在圖1a所示系統(tǒng)的場(chǎng)景下的又一種數(shù)據(jù)通信方式的信令交互圖;
圖2為本發(fā)明實(shí)施例提供的基于代理的數(shù)據(jù)通信方法實(shí)施例的流程圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
在本發(fā)明實(shí)施例中使用的術(shù)語(yǔ)是僅僅出于描述特定實(shí)施例的目的,而非旨在限制本發(fā)明。在本發(fā)明實(shí)施例和所附權(quán)利要求書中所使用的單數(shù)形式的“一種”、“所述”和“該”也旨在包括多數(shù)形式,除非上下文清楚地表示其他含義,“多種”一般包含至少兩種,但是不排除包含至少一種的情況。
應(yīng)當(dāng)理解,本文中使用的術(shù)語(yǔ)“和/或”僅僅是一種描述關(guān)聯(lián)對(duì)象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系,例如,a和/或b,可以表示:?jiǎn)为?dú)存在a,同時(shí)存在a和b,單獨(dú)存在b這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對(duì)象是一種“或”的關(guān)系。
應(yīng)當(dāng)理解,盡管在本發(fā)明實(shí)施例中可能采用術(shù)語(yǔ)第一、第二、第三等來(lái)描述xxx,但這些xxx不應(yīng)限于這些術(shù)語(yǔ)。這些術(shù)語(yǔ)僅用來(lái)將xxx彼此區(qū)分開。例如,在不脫離本發(fā)明實(shí)施例范圍的情況下,第一xxx也可以被稱為第二xxx,類似地,第二xxx也可以被稱為第一xxx。
取決于語(yǔ)境,如在此所使用的詞語(yǔ)“如果”、“若”可以被解釋成為“在……時(shí)”或“當(dāng)……時(shí)”或“響應(yīng)于確定”或“響應(yīng)于檢測(cè)”。類似地,取決于語(yǔ)境,短語(yǔ)“如果確定”或“如果檢測(cè)(陳述的條件或事件)”可以被解釋成為“當(dāng)確定時(shí)”或“響應(yīng)于確定”或“當(dāng)檢測(cè)(陳述的條件或事件)時(shí)”或“響應(yīng)于檢測(cè)(陳述的條件或事件)”。
還需要說明的是,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。
圖1a為本發(fā)明實(shí)施例提供的基于代理的數(shù)據(jù)通信系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖,如圖1a所示,該系統(tǒng)包括:
控制后臺(tái)1,終端設(shè)備2,安裝于終端設(shè)備2中的多個(gè)應(yīng)用程序21,安裝于終端設(shè)備2中的代理22。其中,在機(jī)器人應(yīng)用場(chǎng)景中,上述終端設(shè)備2可以是安裝于機(jī)器人內(nèi)的電子設(shè)備。
其中,代理22中存儲(chǔ)有控制后臺(tái)1的通信地址,代理22還用于根據(jù)控制后臺(tái)1的通信地址與控制后臺(tái)1建立通信連接。
具體地,代理22配置好后啟動(dòng),通過預(yù)先存儲(chǔ)的控制后臺(tái)1的通信地址,通過預(yù)設(shè)端口向控制后臺(tái)1發(fā)送連接請(qǐng)求,如果控制后臺(tái)1通過預(yù)設(shè)端口接收到該連接請(qǐng)求,則與代理22建立通信連接。
可選地,當(dāng)應(yīng)用場(chǎng)景中不止一個(gè)終端設(shè)備2時(shí),該連接請(qǐng)求中可以包括當(dāng)前觸發(fā)該連接請(qǐng)求的終端設(shè)備2的標(biāo)識(shí)以及終端設(shè)備2的通信地址。其中,代理22中被預(yù)先存入其所安裝于的終端設(shè)備2的標(biāo)識(shí)和終端設(shè)備2的通信地址,該終端設(shè)備的標(biāo)識(shí)比如可以是主板編號(hào)等用于唯一標(biāo)識(shí)一個(gè)終端設(shè)備的標(biāo)識(shí),該通信地址比如可以是終端設(shè)備的ip地址,比如內(nèi)網(wǎng)地址或外網(wǎng)地址,端口信息等。此時(shí),控制后臺(tái)1,在根據(jù)該連接請(qǐng)求建立與代理22的通信連接后,還在連接池中添加與終端設(shè)備2的標(biāo)識(shí)對(duì)應(yīng)的通信連接信息。
具體地,控制后臺(tái)1在啟動(dòng)后,創(chuàng)建連接池,當(dāng)接收到上述代理22發(fā)送的連接請(qǐng)求后,通過該連接請(qǐng)求中攜帶的終端設(shè)備2的標(biāo)識(shí)判斷連接池中是否包含有與之對(duì)應(yīng)的通信連接信息,如果沒有,則將當(dāng)前的連接請(qǐng)求中的終端設(shè)備2的標(biāo)識(shí)以及終端設(shè)備2的通信地址以鍵值的方式添加到連接池中,其中鍵為終端設(shè)備2的標(biāo)識(shí),值為終端設(shè)備2的通信地址。
另外,代理22中設(shè)置有多個(gè)應(yīng)用程序21的標(biāo)識(shí),該代理22用于根據(jù)應(yīng)用程序21的標(biāo)識(shí)分別與多個(gè)應(yīng)用程序21建立通信連接。
將代理22配置于終端設(shè)備2中,將需要使用代理22的多個(gè)應(yīng)用程序21中添加代理22中預(yù)先設(shè)置的標(biāo)識(shí),以便于代理22與該多個(gè)應(yīng)用程序21建立通信連接,且標(biāo)識(shí)不能重復(fù)。
而且,代理22中設(shè)置有服務(wù)接口集合,該服務(wù)接口集合對(duì)應(yīng)于多個(gè)應(yīng)用程序21提供的服務(wù)集合。
其中,上述應(yīng)用程序的標(biāo)識(shí),可以包括表征一個(gè)應(yīng)用程序的標(biāo)識(shí),也可以進(jìn)一步包括表征該應(yīng)用程序提供的服務(wù)的標(biāo)識(shí),比如服務(wù)名稱。
值得說明的是,上述服務(wù)接口集合中的服務(wù)接口與多個(gè)應(yīng)用程序提供的服務(wù)集合中的服務(wù)并非一定是一一對(duì)應(yīng)關(guān)系,比如可以是一對(duì)多的對(duì)應(yīng)關(guān)系,此時(shí),可以對(duì)服務(wù)集合中的服務(wù)進(jìn)行共性的抽象,如果某幾個(gè)服務(wù)的處理邏輯一致,則對(duì)應(yīng)于同一個(gè)服務(wù)接口。另外,可選地,控制后臺(tái)1維護(hù)的服務(wù)接口集合與代理22維護(hù)的服務(wù)接口集合也可以不完全一致,因?yàn)橥?,控制后臺(tái)1可能進(jìn)一步對(duì)代理22維護(hù)的服務(wù)接口集合中的幾個(gè)服務(wù)接口抽象共性,對(duì)應(yīng)于一個(gè)控制后臺(tái)側(cè)的服務(wù)接口。
具體地,可以預(yù)先在代理22中定義服務(wù)接口集合,該服務(wù)接口集合中的服務(wù)接口用于進(jìn)行代理22與相應(yīng)應(yīng)用程序21間的通信。舉例來(lái)說,假設(shè)應(yīng)用程序a中提供的服務(wù)包括服務(wù)a、服務(wù)b,應(yīng)用程序b中提供的服務(wù)包括服務(wù)c、服務(wù)d,那么在代理22中預(yù)先定義與服務(wù)a、服務(wù)b、服務(wù)c、服務(wù)d分別對(duì)應(yīng)的服務(wù)接口,以便于當(dāng)控制后臺(tái)1與應(yīng)用程序a中的服務(wù)a之間有數(shù)據(jù)通信需求時(shí),代理22能夠?qū)⑼ㄐ艛?shù)據(jù)通過與之對(duì)應(yīng)的服務(wù)接口傳輸至服務(wù)a,同理,當(dāng)服務(wù)a想要傳輸數(shù)據(jù)給控制后臺(tái)1時(shí),可以基于與之對(duì)應(yīng)的服務(wù)接口將數(shù)據(jù)發(fā)送至代理22,以便代理22將數(shù)據(jù)轉(zhuǎn)發(fā)至控制后臺(tái)1。
具體地,應(yīng)用程序21與代理22間通信建立的過程比如可以是:
在需要使用代理22的應(yīng)用程序21的service中添加固定的服務(wù)名稱;
在應(yīng)用程序21的service初始化后,對(duì)agent定義的服務(wù)接口進(jìn)行實(shí)現(xiàn),對(duì)實(shí)現(xiàn)進(jìn)行實(shí)例化后,通過反射和動(dòng)態(tài)代理機(jī)制,對(duì)實(shí)例化的對(duì)象進(jìn)行發(fā)布。當(dāng)某服務(wù)被觸發(fā)產(chǎn)生數(shù)據(jù)通信需求時(shí),通過android的intent機(jī)制獲取代理的對(duì)應(yīng)服務(wù)接口,發(fā)送相應(yīng)的通信數(shù)據(jù);其中,假設(shè)應(yīng)用程序21和代理22所安裝于的終端設(shè)備2是基于android系統(tǒng)的;
代理22啟動(dòng)初始化,并將終端設(shè)備2中的應(yīng)用程序21配置的服務(wù)名稱進(jìn)行注冊(cè),啟動(dòng)后,當(dāng)存在向某服務(wù)的通信需求時(shí),通過服務(wù)名稱獲取到相應(yīng)的服務(wù)接口,建立通信通道,向?qū)?yīng)服務(wù)發(fā)送通信數(shù)據(jù)。
基于上述過程,控制后臺(tái)1與應(yīng)用程序21之間可以通過代理22進(jìn)行數(shù)據(jù)通信。比如,控制后臺(tái)1可以通過代理22向某個(gè)應(yīng)用程序21發(fā)送版本升級(jí)信息;某個(gè)應(yīng)用程序21可以通過代理22向控制后臺(tái)1發(fā)送版本升級(jí)請(qǐng)求,發(fā)送運(yùn)行狀態(tài)信息等。
另外,由于終端設(shè)備2中使用該代理22的應(yīng)用程序21的數(shù)量往往是多個(gè),而控制后臺(tái)1往往在不同情況下都會(huì)有與不同應(yīng)用程序的通信需求,基于本實(shí)施例,不論控制后臺(tái)1需要與哪個(gè)使用代理22的應(yīng)用程序進(jìn)行數(shù)據(jù)通信,都是通過代理22實(shí)現(xiàn)的,此時(shí),控制后臺(tái)1僅需要維護(hù)與代理22之間的一條通信連接即可,不需要控制后臺(tái)1維護(hù)與各應(yīng)用程序之間的通信連接,降低了控制后臺(tái)1的通信連接的維護(hù)成本,即大大降低了控制后臺(tái)1的連接池中的通信連接信息數(shù)量。
綜上,本實(shí)施例提供的基于代理的數(shù)據(jù)通信系統(tǒng),包括:控制后臺(tái),終端設(shè)備,安裝于終端設(shè)備中的多個(gè)應(yīng)用程序和代理。其中,代理中設(shè)置有多個(gè)應(yīng)用程序的標(biāo)識(shí),以根據(jù)各應(yīng)用程序的標(biāo)識(shí)分別與多個(gè)應(yīng)用程序建立通信連接;并且,代理中存儲(chǔ)有控制后臺(tái)的通信地址,以根據(jù)控制后臺(tái)的通信地址與控制后臺(tái)建立通信連接。另外,代理中還設(shè)置有對(duì)應(yīng)于終端設(shè)備中多個(gè)應(yīng)用程序提供的服務(wù)集合的服務(wù)接口集合,控制后臺(tái)可以對(duì)該服務(wù)接口集合進(jìn)行實(shí)現(xiàn),從而,基于代理與控制后臺(tái)的通信連接,代理與應(yīng)用程序的通信連接以及各服務(wù)接口,可以通過代理來(lái)實(shí)現(xiàn)控制后臺(tái)與終端設(shè)備中應(yīng)用程序的及時(shí)性地?cái)?shù)據(jù)通信,以便于控制后臺(tái)及時(shí)發(fā)現(xiàn)終端設(shè)備的異常狀況進(jìn)行相應(yīng)處理。
圖1b為在圖1a所示系統(tǒng)的場(chǎng)景下的一種數(shù)據(jù)通信方式的信令交互圖,如圖1b所示,包括如下步驟:
步驟101、代理以預(yù)設(shè)時(shí)間間隔向控制后臺(tái)發(fā)送心跳消息,心跳消息中包含終端設(shè)備的標(biāo)識(shí)。
步驟102、控制后臺(tái)響應(yīng)于心跳消息,查詢連接池中是否包含與終端設(shè)備的標(biāo)識(shí)對(duì)應(yīng)的通信連接信息,若不包含,則在連接池中添加與終端設(shè)備的標(biāo)識(shí)對(duì)應(yīng)的通信連接信息,若包含,則修改該通信連接信息的更新時(shí)間。
步驟103、控制后臺(tái)若在預(yù)設(shè)時(shí)間內(nèi)沒有接收到代理發(fā)送的心跳消息,或者,接收到代理發(fā)送的離線通知消息,則在連接池中刪除該通信連接信息。
本實(shí)施例中,為了保證代理22與控制后臺(tái)1之間通信連接的可靠性,代理22還用于以一定時(shí)間間隔循環(huán)向控制后臺(tái)1發(fā)送心跳消息,以保證兩者之前通信連接的有效性。
相應(yīng)地,控制后臺(tái)1還用于:在接收到該心跳消息后,查詢連接池中是否包含與終端設(shè)備的標(biāo)識(shí)對(duì)應(yīng)的通信連接信息,若不包含,說明代理22與控制后臺(tái)1的通信連接已經(jīng)中斷,此時(shí),可以重新建立兩者間的通信連接,并在連接池中添加對(duì)應(yīng)的通信連接信息;若包含,則修改該通信連接信息的更新時(shí)間,以更新該通信連接信息最新被檢測(cè)為有效的時(shí)間。如果控制后臺(tái)1若在預(yù)設(shè)時(shí)間內(nèi)沒有接收到代理22發(fā)送的心跳消息,或者,接收到代理22發(fā)送的離線通知消息,則說明兩者間的通信連接中斷,在連接池中刪除與之對(duì)應(yīng)的通信連接信息。
本實(shí)施例中,基于上述心跳機(jī)制,能夠保證了代理與控制后臺(tái)之間通信連接的有效性。
圖1c為在圖1a所示系統(tǒng)的場(chǎng)景下的另一種數(shù)據(jù)通信方式的信令交互圖,如圖1c所示,包括如下步驟:
步驟201、控制后臺(tái)接收用戶觸發(fā)的數(shù)據(jù)通信請(qǐng)求,該數(shù)據(jù)通信請(qǐng)求中包括終端設(shè)備的標(biāo)識(shí)、應(yīng)用標(biāo)識(shí)和服務(wù)接口標(biāo)識(shí)。
在一應(yīng)用場(chǎng)景中,假設(shè)控制后臺(tái)1需要與某應(yīng)用程序21進(jìn)行數(shù)據(jù)通信,該數(shù)據(jù)通信需求的觸發(fā),可選地,可以是控制后臺(tái)1側(cè)的工作人員即上述用戶主動(dòng)觸發(fā)的。
當(dāng)用戶觸發(fā)該數(shù)據(jù)通信請(qǐng)求時(shí),用戶可以是基于在控制后臺(tái)1的界面上通過選擇向哪個(gè)終端設(shè)備的哪個(gè)應(yīng)用程序觸發(fā)什么樣的服務(wù)來(lái)觸發(fā)上述數(shù)據(jù)通信請(qǐng)求。
步驟202、控制后臺(tái)根據(jù)終端設(shè)備的標(biāo)識(shí)從連接池中查詢通信連接信息,以根據(jù)通信連接信息和服務(wù)接口標(biāo)識(shí)對(duì)應(yīng)的服務(wù)接口向代理發(fā)送數(shù)據(jù)通信請(qǐng)求。
由于控制后臺(tái)1的連接池中可能維護(hù)有與多個(gè)不同的終端設(shè)備2對(duì)應(yīng)的代理之間的通信連接信息,當(dāng)控制后臺(tái)1當(dāng)前需要與某個(gè)終端設(shè)備2中的某應(yīng)用程序21進(jìn)行針對(duì)某服務(wù)的數(shù)據(jù)通信時(shí),基于該終端設(shè)備2的標(biāo)識(shí),從連接池中查詢對(duì)應(yīng)的通信連接信息,以基于該通信連接信息,通過相應(yīng)的通信連接,并調(diào)用對(duì)應(yīng)的服務(wù)接口向?qū)?yīng)的代理22發(fā)送數(shù)據(jù)通信請(qǐng)求。
步驟203、代理通過服務(wù)接口標(biāo)識(shí)對(duì)應(yīng)的服務(wù)接口向應(yīng)用標(biāo)識(shí)對(duì)應(yīng)的應(yīng)用程序發(fā)送數(shù)據(jù)通信請(qǐng)求。
代理22接收到該數(shù)據(jù)通信請(qǐng)求后,調(diào)用相應(yīng)的服務(wù)接口,向?qū)?yīng)應(yīng)用程序21的相應(yīng)服務(wù)發(fā)送該數(shù)據(jù)通信請(qǐng)求,以實(shí)現(xiàn)控制后臺(tái)1與該應(yīng)用程序21之間的數(shù)據(jù)通信。
另外,在另一場(chǎng)景中,可選地,當(dāng)是某終端設(shè)備2中多個(gè)應(yīng)用程序中的任一應(yīng)用程序21需要與控制后臺(tái)1進(jìn)行數(shù)據(jù)通信時(shí),比如該應(yīng)用程序21被用戶觸發(fā)了某操作,該操作導(dǎo)致需要與控制后臺(tái)1通信,此時(shí),代理22還用于:接收該應(yīng)用程序21通過相應(yīng)的服務(wù)接口發(fā)送的數(shù)據(jù)通信請(qǐng)求;基于與控制后臺(tái)1的通信連接,通過該服務(wù)接口向控制后臺(tái)1發(fā)送該數(shù)據(jù)通信請(qǐng)求。
為便于理解,下面以一個(gè)實(shí)際的例子來(lái)說明控制后臺(tái)1和應(yīng)用程序21之間通過代理22實(shí)現(xiàn)的數(shù)據(jù)通信過程。
比如,當(dāng)應(yīng)用程序21需要被進(jìn)行版本升級(jí)時(shí),例如終端設(shè)備側(cè)用戶觸發(fā)了對(duì)該應(yīng)用程序21的升級(jí)請(qǐng)求時(shí),應(yīng)用程序21通過版本升級(jí)服務(wù)接口向代理22發(fā)送該升級(jí)請(qǐng)求,該升級(jí)請(qǐng)求中可以包括所屬終端設(shè)備的標(biāo)識(shí)、應(yīng)用程序標(biāo)識(shí)、當(dāng)前版本號(hào)。代理22接收到該升級(jí)請(qǐng)求后,通過相應(yīng)的服務(wù)接口以及與控制后臺(tái)1之間已經(jīng)建立的通信連接,向控制后臺(tái)1發(fā)送該升級(jí)請(qǐng)求??刂坪笈_(tái)1接收到該升級(jí)請(qǐng)求后,查詢數(shù)據(jù)庫(kù)中是否有與之對(duì)應(yīng)的新版本信息,如果有,則將攜帶有新版本號(hào)、新版本下載地址等信息的升級(jí)響應(yīng)反饋至代理22,代理22反饋至應(yīng)用程序21,以使得應(yīng)用程序21基于該升級(jí)響應(yīng)完成相應(yīng)的升級(jí)處理。
圖1d為在圖1a所示系統(tǒng)的場(chǎng)景下的又一種數(shù)據(jù)通信方式的信令交互圖,如圖1d所示,包括如下步驟:
步驟301、代理以第一預(yù)設(shè)時(shí)間間隔采集多個(gè)應(yīng)用程序和/或終端設(shè)備的運(yùn)行狀態(tài)信息。
步驟302、代理將運(yùn)行狀態(tài)信息緩存至代理數(shù)據(jù)庫(kù)中.
步驟303、代理以第二預(yù)設(shè)時(shí)間間隔從代理數(shù)據(jù)庫(kù)中讀取相應(yīng)時(shí)間內(nèi)存入的運(yùn)行狀態(tài)信息,第二預(yù)設(shè)時(shí)間間隔大于第一預(yù)設(shè)時(shí)間間隔。
步驟304、代理將讀取到的運(yùn)行狀態(tài)信息發(fā)送至控制后臺(tái)。
步驟304、代理若發(fā)送成功,則將已發(fā)送的運(yùn)行狀態(tài)信息從代理數(shù)據(jù)庫(kù)中刪除;若發(fā)送不成功,則延遲至下一個(gè)發(fā)送時(shí)間重新發(fā)送該運(yùn)行狀態(tài)信息。
本實(shí)施例中,以對(duì)終端設(shè)備2中多個(gè)應(yīng)用程序21以及終端設(shè)備2的運(yùn)行狀況進(jìn)行監(jiān)測(cè)的場(chǎng)景為例,對(duì)如何基于代理22實(shí)現(xiàn)控制后臺(tái)1與終端設(shè)備2中多個(gè)應(yīng)用程序21之間的數(shù)據(jù)通信進(jìn)行說明。
代理22啟動(dòng)成功后,可以啟動(dòng)一個(gè)特定的定時(shí)任務(wù),比如每隔5秒鐘收集終端設(shè)備2的cpu使用率、內(nèi)存使用率、磁盤使用率、電量信息、終端設(shè)備中已安裝應(yīng)用程序和其版本等運(yùn)行狀態(tài)信息,并將采集到的運(yùn)行狀態(tài)信息緩存到代理數(shù)據(jù)庫(kù)。比如每隔一分鐘,通過與控制后臺(tái)1之間已經(jīng)建立的通信連接向控制后臺(tái)1上傳此一分鐘內(nèi)收集到的運(yùn)行狀態(tài)信息,若上傳成功,從代理數(shù)據(jù)庫(kù)中刪除已發(fā)送的相應(yīng)運(yùn)行狀態(tài)信息,若未成功,則等待下次繼續(xù)上傳。
相應(yīng)地,控制后臺(tái)1接收并監(jiān)控代理22發(fā)送來(lái)的運(yùn)行狀態(tài)信息。具體地,代理22上傳運(yùn)行狀態(tài)信息時(shí),還附加有對(duì)應(yīng)的終端設(shè)備標(biāo)識(shí)、數(shù)據(jù)收集時(shí)間、指標(biāo)名稱等描述信息,以用于確定數(shù)據(jù)的唯一性。具體地,如果控制后臺(tái)1基于該描述信息發(fā)現(xiàn)后臺(tái)數(shù)據(jù)庫(kù)中已經(jīng)存在了相應(yīng)的運(yùn)行狀態(tài)信息,則不寫入后臺(tái)數(shù)據(jù)庫(kù)。
基于本實(shí)施例,控制后臺(tái)1可以通過代理對(duì)終端設(shè)備以及其中應(yīng)用程序的運(yùn)行狀態(tài)進(jìn)行及時(shí)監(jiān)控,以便于及時(shí)發(fā)送終端設(shè)備、應(yīng)用程序的異常,進(jìn)行相應(yīng)的處理。
圖2為本發(fā)明實(shí)施例提供的基于代理的數(shù)據(jù)通信方法實(shí)施例的流程圖,本實(shí)施例提供的該基于代理的數(shù)據(jù)通信方法可以由上述基于代理的數(shù)據(jù)通信系統(tǒng)中的代理來(lái)執(zhí)行。如圖2所示,該方法包括如下步驟:
步驟401、代理根據(jù)預(yù)先存儲(chǔ)的控制后臺(tái)的通信地址,與控制后臺(tái)建立第一通信連接。
步驟402、代理根據(jù)預(yù)先存儲(chǔ)的所屬終端設(shè)備中的多個(gè)應(yīng)用程序的標(biāo)識(shí),分別與多個(gè)應(yīng)用程序建立第二通信連接。
步驟403、代理根據(jù)第一通信連接、第二通信連接和預(yù)設(shè)服務(wù)接口集合,進(jìn)行控制后臺(tái)與多個(gè)應(yīng)用程序之間的數(shù)據(jù)通信處理,預(yù)設(shè)服務(wù)接口集合中的服務(wù)接口對(duì)應(yīng)于多個(gè)應(yīng)用程序提供的服務(wù)集合。
本實(shí)施例提供的所述基于代理的數(shù)據(jù)通信方法僅為以代理的角度,對(duì)如何基于代理實(shí)現(xiàn)控制后臺(tái)與終端設(shè)備中應(yīng)用程序間的數(shù)據(jù)通信進(jìn)行的說明,其中未詳細(xì)闡述的部分可以參見前述各實(shí)施例中的相關(guān)說明,在此不贅述。
以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動(dòng)的情況下,即可以理解并實(shí)施。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可借助加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)裝置(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)裝置等)執(zhí)行各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
最后應(yīng)說明的是:以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。