文/蔣玲玲
隨著近些年IM即時(shí)通信技術(shù)的迅猛發(fā)展,使得市場(chǎng)中也出現(xiàn)了移動(dòng)飛信、騰訊微信以及QQ等一系列即時(shí)通信客戶端,該信息連接模式有助于即時(shí)向用戶提供文件傳輸服務(wù),并且實(shí)現(xiàn)及時(shí)收發(fā)信息等功能。即時(shí)通信內(nèi)容包括采用XMPP協(xié)議實(shí)現(xiàn)數(shù)據(jù)交互目標(biāo),而且該協(xié)議以TCP為基礎(chǔ)實(shí)現(xiàn)XML數(shù)據(jù)流的傳輸,有助于為數(shù)據(jù)安全性提供保障。該研究提出基于Web前端開發(fā)的即時(shí)通信方案,實(shí)現(xiàn)了通信文件的即時(shí)傳輸。
1.1.1 WebRTC服務(wù)器
該服務(wù)器用于和客戶端創(chuàng)建Web連接,同時(shí)在該連接過程中實(shí)現(xiàn)ROAP消息的傳輸,以展開客戶端間的連接,WebRTC服務(wù)器通常和客戶端相連接,并且負(fù)責(zé)轉(zhuǎn)發(fā)客戶端的信令消息。
1.1.2 中央服務(wù)器
這一服務(wù)器的功能主要是管控WebRTC服務(wù)器,在服務(wù)器啟動(dòng)或者關(guān)閉狀態(tài)下,均會(huì)將注銷、注冊(cè)信息發(fā)送給中央服務(wù)器。中央服務(wù)器在系統(tǒng)運(yùn)行期間會(huì)選擇心跳機(jī)制向注冊(cè)WebRTC定時(shí)發(fā)送請(qǐng)求,以明確WebRTC的運(yùn)行狀態(tài)。
1.1.3 環(huán)信服務(wù)器
這一服務(wù)器的角色為XMPP服務(wù)器,與客戶端相結(jié)合實(shí)現(xiàn)雙線數(shù)據(jù)的連接,有效維護(hù)客戶端的用戶會(huì)話,而且用戶也可通過系統(tǒng)對(duì)即時(shí)消息進(jìn)行發(fā)送,這樣客戶端就會(huì)出現(xiàn)XML數(shù)據(jù),進(jìn)而向環(huán)信服務(wù)器即時(shí)發(fā)送相關(guān)數(shù)據(jù)。
首先設(shè)計(jì)ROAP協(xié)議消息格式。該協(xié)議大多在協(xié)商搭建媒體通道中應(yīng)用,通過Offer/Answer模式實(shí)現(xiàn)客戶端信息的交互,此為SIP協(xié)議簡(jiǎn)化版本,同時(shí)為消息自定義擴(kuò)展提供重要支持。該文件傳輸方案主要通過ROAP協(xié)議對(duì)瀏覽器間數(shù)據(jù)通道進(jìn)行創(chuàng)建。ROAP消息格式內(nèi)部的type字段主要在ROAP協(xié)議消息標(biāo)識(shí)中應(yīng)用,包括接受會(huì)話的Answer消息、發(fā)送會(huì)話請(qǐng)求的Offer消息等。其次設(shè)計(jì)文件傳輸消息格式。在系統(tǒng)客戶端間通過ROAP協(xié)議對(duì)雙向數(shù)據(jù)通道進(jìn)行創(chuàng)建,由此就能夠以該通道為基礎(chǔ)實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)數(shù)據(jù)傳輸。因?yàn)榛ヂ?lián)網(wǎng)傳輸期間會(huì)限制數(shù)據(jù)傳輸容量,傳輸文件過程中需要分塊所發(fā)送文件,再與接收端實(shí)現(xiàn)重組,為提升文件傳輸高效性與穩(wěn)定性,該方案設(shè)計(jì)傳輸文件過程中的消息格式,主要在傳輸文件內(nèi)容、描述文件消息和請(qǐng)求文件重傳中應(yīng)用。在消息編碼結(jié)構(gòu)方面,即時(shí)消息首位大小是一個(gè)字節(jié),主要表示各消息類型,定自定義不同消息類型后的字段內(nèi)容。在字段方面,前兩個(gè)字節(jié)表示字段長度,后面的字節(jié)則主要用作裝載數(shù)據(jù)。
從根本上說,設(shè)計(jì)關(guān)鍵流程其實(shí)就是Web前端開發(fā)模式下的即時(shí)消息方案中進(jìn)行關(guān)鍵流程的設(shè)計(jì),主要包括通過環(huán)信服務(wù)器當(dāng)作XMPP服務(wù)器,以設(shè)計(jì)即時(shí)消息通信流程,通過WebRTC技術(shù)創(chuàng)建客戶端數(shù)據(jù)傳輸通道,首先設(shè)計(jì)以Web前端開發(fā)為基礎(chǔ)的即時(shí)消息方案流程,其次選擇WebRTC技術(shù)于用戶客戶端間創(chuàng)建雙向數(shù)據(jù)傳輸通道,再次在客戶端創(chuàng)建雙向通道之后,并在該通道中實(shí)現(xiàn)文件數(shù)據(jù)的傳輸。
系統(tǒng)性分析與探討即時(shí)消息通信流程設(shè)計(jì),從而為客戶端充分發(fā)揮即時(shí)消息通信功能提供重要保障,通常會(huì)將Socket創(chuàng)建在客戶端、環(huán)信服務(wù)器兩者間,通過環(huán)信服務(wù)器實(shí)現(xiàn)轉(zhuǎn)發(fā)XMPP即時(shí)消息的目的。此外,為滿足Web前端開發(fā)文件傳輸功能,信令服務(wù)器、系統(tǒng)客戶端往往會(huì)進(jìn)行WebSocket雙工通道的創(chuàng)建,并且連接傳輸ROAP協(xié)議,其主要功能在于實(shí)現(xiàn)媒體協(xié)商、私網(wǎng)穿越,進(jìn)而對(duì)客戶端數(shù)據(jù)傳輸通道進(jìn)行全面創(chuàng)建。除此之外,客戶端間可以以該數(shù)據(jù)傳輸通道為基礎(chǔ)進(jìn)行文件數(shù)據(jù)的直接傳輸,文件數(shù)據(jù)的傳輸主要選擇文件傳輸消息格式,能夠?qū)崿F(xiàn)文件的重組,使重新傳輸文件功能得以實(shí)現(xiàn)。
圖1:創(chuàng)建連接性能測(cè)試圖
圖2:數(shù)據(jù)傳輸性能測(cè)試圖
該研究以Web前端開發(fā)為基礎(chǔ)的即時(shí)消息通信方案選擇環(huán)信即時(shí)通訊服務(wù)器當(dāng)作該研究中的XMPP服務(wù)器,同時(shí)在客戶端構(gòu)建與解析XMPP協(xié)議消息格式,依照該研究中的即時(shí)消息通信方案,使系統(tǒng)群聊功能得以實(shí)現(xiàn)。
即時(shí)消息存儲(chǔ)方案的提出,重點(diǎn)在于存儲(chǔ)即時(shí)消息,同時(shí)提出采用HTML5內(nèi)部的localStorage有效存儲(chǔ)用戶聯(lián)系人,其中包括群組列表與好友列表,方案還提出,通過非關(guān)系型數(shù)據(jù)庫對(duì)即時(shí)消息內(nèi)容進(jìn)行存儲(chǔ),localStorage內(nèi)部存儲(chǔ)的Key值代表即時(shí)消息發(fā)送、收發(fā)兩大主體的名稱,即時(shí)消息收發(fā)時(shí)間為value值。Key值于數(shù)據(jù)庫內(nèi)部存儲(chǔ)指的是即時(shí)消息收發(fā)時(shí)間,value值指的是即時(shí)消息的內(nèi)容對(duì)象,包括消息收發(fā)時(shí)間、發(fā)送方和接收方、消息類型等。除此之外,方案中標(biāo)明,IndexedDB中可以為消息類型、消息收發(fā)時(shí)間等添加索引,從而使數(shù)據(jù)庫消息記錄查詢效率得到有效增加。
該方案使即時(shí)消息存儲(chǔ)方案系統(tǒng)得以實(shí)現(xiàn),可以將離線、在線消息等實(shí)現(xiàn)記錄管理后提供給客戶端用戶,而用戶通過該系統(tǒng)能夠即時(shí)查詢近期聯(lián)系人,依照時(shí)間順序?qū)β?lián)系人、通信記錄等進(jìn)行查看,并且根據(jù)方案中的消息存儲(chǔ)功能,使即時(shí)消息記錄功能得以實(shí)現(xiàn)。Web前端開發(fā)模式下的文件傳輸中,能夠使客戶端文件傳輸功能得以實(shí)現(xiàn),同時(shí)能夠?yàn)閭鬏敹辔募蛘邌挝募峁┲?,依照該研究的即時(shí)消息通信方案?jìng)鬏斝Ч?,系統(tǒng)可依照文件接收情況將文件傳輸速度顯示在系統(tǒng)頁面中。
該研究方案中所提出的Web前端開發(fā)模式下的文件傳輸方案,使客戶端間數(shù)據(jù)直連傳輸通道得以實(shí)現(xiàn),客戶端可以利用互聯(lián)網(wǎng)方式進(jìn)行文件數(shù)據(jù)的直接傳輸,不需要通過服務(wù)器對(duì)信息進(jìn)行轉(zhuǎn)發(fā),在很大程度上提升了文件或者信息數(shù)據(jù)傳輸效率。實(shí)現(xiàn)該方案的即時(shí)消息系統(tǒng)中,對(duì)文件傳輸性能進(jìn)行全面測(cè)試,以互聯(lián)網(wǎng)平穩(wěn)運(yùn)行的基礎(chǔ)上,因?yàn)橄到y(tǒng)用戶比較多,IMB客戶端間創(chuàng)建數(shù)據(jù)雙向通道連接,測(cè)試結(jié)果如圖1所示。
在性能測(cè)試方面,因?yàn)橄到y(tǒng)用戶量相對(duì)來說比較多,可以在客戶端之間 進(jìn)行數(shù)據(jù)傳輸通道的創(chuàng)建,這樣就有助于通道連接時(shí)間的延長,增加用戶量過程中,會(huì)使信令服務(wù)器負(fù)載得到相應(yīng)增加,由此就會(huì)延長連接創(chuàng)建的時(shí)間??蛻舳藬?shù)據(jù)傳輸通道創(chuàng)建后,該通道傳輸數(shù)據(jù)測(cè)試結(jié)果如圖2所示,從圖2可以看出,該文件傳輸方案,有助于提升Web下的文件傳輸效率,為系統(tǒng)傳輸性能提供重要保障。
該研究對(duì)Web前端開發(fā)模式下的即時(shí)消息瀏覽器存儲(chǔ)、即時(shí)通信和文件傳輸方案設(shè)計(jì)進(jìn)行分析與探討,并且提出以環(huán)信即時(shí)通信服務(wù)器為XMPP服務(wù)器,從而使即時(shí)消息通信方案得以實(shí)現(xiàn),數(shù)據(jù)庫中實(shí)現(xiàn)即時(shí)消息的存儲(chǔ)。通過測(cè)試結(jié)果顯示,該方案有助于提升Web前端開發(fā)模式下的即時(shí)文件傳輸可靠性與傳輸效率。