一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

基于openfire和xmpp協(xié)議的Webim客戶端設(shè)計與實現(xiàn)

 WindySky 2017-10-26 發(fā)布于廣東
    摘要:WebIM,是基于HTTP協(xié)議,系統(tǒng)采用B/S結(jié)構(gòu)進行開發(fā),客戶端以網(wǎng)頁的形式實現(xiàn)與openfire服務(wù)器及其它客戶端的及時通信。這種B/S結(jié)構(gòu)的系統(tǒng)功能在服務(wù)器端統(tǒng)一管理與維護,既降低了維護難度,也使系統(tǒng)部署費用得到減少。因此,Web IM技術(shù)將在基于即時通信及Web的遠程監(jiān)控、網(wǎng)站客服等方面有重大的意義。為解決現(xiàn)有WebIM系統(tǒng)客戶端“拉”(Client_pull)模式周期請求而產(chǎn)生的系統(tǒng)消息延遲,以及客戶端和服務(wù)器端通信量大的問題,提出了利用服務(wù)器“推”(Server-push)模式技術(shù)作為基礎(chǔ)的WebIM系統(tǒng),并選擇openfire開源服務(wù)器及支持XMPP作為服務(wù)器和客戶端的通信協(xié)議。并給出了實現(xiàn)HTTP長連接的策略。并開發(fā)實現(xiàn)了WebIM系統(tǒng),采用服務(wù)器推送方式使用戶在體驗方面得到改進,Web用戶將不會感覺到消息的延遲。
中國論文網(wǎng) http://www./8/view-5662214.htm
  關(guān)鍵詞:IM;WebIM;通信;網(wǎng)絡(luò)
  中圖分類號:TP311 文獻標(biāo)識碼:A 文章編號:1009-3044(2014)09-1971-05
  傳統(tǒng)的基于WebIM的引擎設(shè)計方式大多使Ajax無刷新交互技術(shù)實現(xiàn),設(shè)計一種時間間隔定期獲取數(shù)據(jù)。它是一種基于客戶端不斷向服務(wù)器發(fā)出請求,以實現(xiàn)與服務(wù)器保持同步。 但從基于這技術(shù)的產(chǎn)品實際效果來看,客戶與客戶之間的數(shù)據(jù)信息延遲有時會很大,不是很穩(wěn)定。同時,大量的同步請求數(shù)據(jù)使得服務(wù)器和客戶端之間的通信量增大,使網(wǎng)絡(luò)的性能下降,服務(wù)器負載過重。該文通過對現(xiàn)有WebIM進行了研究,分析了XMPP技術(shù),提出了以支持XMPP的openfire服務(wù)器推送技術(shù)來代替?zhèn)鹘y(tǒng)客戶周期性的請求保持同步,致使客戶數(shù)據(jù)更新的基于B/S結(jié)構(gòu)的WebIM系統(tǒng),并通過佛山一呼百應(yīng)移動電子商務(wù)平臺項目的WebIm系統(tǒng)驗證了該方案的可行性,有效性。原型系統(tǒng)也可以擴展到類似系統(tǒng)中。
  本文設(shè)計與實現(xiàn)的Webim系統(tǒng)是以openfire為服務(wù)器,以xmpp技術(shù)更新數(shù)據(jù)??蛻舳送ㄟ^瀏覽器登錄服務(wù)器后,即時更新用戶UI數(shù)據(jù)。Openfire服務(wù)器通過xmpp技術(shù)得到新的數(shù)據(jù)后,即時向客戶端推送。發(fā)送完后,客戶端瀏器與openfire繼續(xù)保持連接,等待下一次數(shù)據(jù)的更新。xmpp技術(shù)采用長連接及服務(wù)器的推送方式,減少了客戶端的請求,同時也減少了openfire服務(wù)器的響應(yīng)時間,也節(jié)省了網(wǎng)絡(luò)帶寬,改善了服務(wù)器也與客戶端的傳輸性能,從而延遲得到減少,用戶的體驗會更好。
  1 傳統(tǒng)的WebIM存在的問題
  1.1延遲
  現(xiàn)有許多WebIM系統(tǒng)為了增強用戶體驗,使用AJAX技術(shù)進行異步通信,WebIM客戶端游覽器按照設(shè)定的時間間隔定時向服務(wù)器刷新數(shù)據(jù)。當(dāng)客戶端與客戶端交換信息時,發(fā)送端先把數(shù)據(jù)發(fā)送到服務(wù)器存儲,然后當(dāng)接收端向服務(wù)器端請求數(shù)據(jù)時,才能獲取新的數(shù)據(jù)。在這個過程中客戶端通信延遲的最小時間間隔將是AJAX異步請求。但在實際的應(yīng)用中,客戶端消息的延遲將大于這個時間間隔,因為服務(wù)器端需要處理數(shù)據(jù)庫事務(wù)以及實例化AJAX客戶端的對象。所以現(xiàn)有WebIM系統(tǒng)中,普遍存在消息延遲的情況。
  1.2 通信量大,通信性能差
  WebIM客戶端為了與服務(wù)器保持同步,需周期性向服務(wù)器發(fā)送信息,為了減少傳送信息的延遲,必須將周期訪問時間設(shè)置很小,這將對服務(wù)器產(chǎn)生壓力,因為這些“心跳”信息只是使服務(wù)器與客戶端維持同步,使用戶和用戶維持在線狀態(tài),相當(dāng)一些控制,而不是實際有效信息。過多的這些數(shù)據(jù)增加了服務(wù)器的負載,增大延遲。另外如果客戶之間的消息更新的頻率很慢時,服務(wù)器需要額外去響應(yīng)客戶端的心跳信息,并還需返回類似于false的數(shù)據(jù)給客戶端,這樣就為服務(wù)器端帶來了負載上的壓力,也增大延遲。
  2 xmpp技術(shù)帶來的改變
  xmpp通過建立一個和Openfire服務(wù)器的長連接,當(dāng)openfire服務(wù)器獲取了新的數(shù)據(jù)時,通過該長連接即時向客戶端進行推送,客戶端從長連接管道中得到了數(shù)據(jù)的更新。使用xmpp技術(shù)所建立的長連接機制,能很好地解決了二個問題,第一,即時推送,消息即時,無延遲。第二,長連接機制,減少了建立與關(guān)閉連接數(shù),在整個通信過程中,長連接一直維持,直至客戶端主動退出系統(tǒng),從而減少了通信量,改善了能信性能。
  HTTP長連接策略:
  openfire服務(wù)器支持xmpp技術(shù)采用推送。當(dāng)服務(wù)器端的信息有變化時,主動推送,而不需要客戶端請求。推送技術(shù)主要有以下兩種: (1)HTTP流方式(2)長輪詢方式
  在HTTP1.1規(guī)范中規(guī)定,客戶端與服務(wù)器端的HTTP的連接不能超過兩個,如果超過二個的連接,將會被阻塞丟掉。所以在每個WebIM客戶端和服務(wù)器之間只建立一個HTTP的長連接,也符合HTTP規(guī)范要求,也改善了網(wǎng)絡(luò)的性能。長連接管道中XMPP消息按優(yōu)先級排列:聊天消息:聯(lián)系人的消息:公告消息,來進行發(fā)送。在openfire中與客戶的連接中最核心的Servlet技術(shù)是Connection_Servlet,它實現(xiàn)HttpServlet接口類,private的成員變量中保留了Continuation類的對象,使瀏覽器客戶端和openfire服務(wù)器端的HTTP長連接得到維持。
  3 客戶端設(shè)計與實現(xiàn)
  3.1 通信協(xié)議
  WebIM系統(tǒng)設(shè)計使用XMPP(exten-siblemessagingandpresenceprotocol,可擴展消息處理在線協(xié)議)協(xié)議,它是基于可擴展標(biāo)記語言 (XML)的協(xié)議,用于即時信息(IM)以及實時在線探測。XML流通過在TCP/IP鏈路上完成服務(wù)器端和客戶端的傳輸通信,所有通信開始以流結(jié)點開始,通信結(jié)束以流作為結(jié)束。web客戶端通過解析XML來獲取傳輸?shù)男畔?nèi)容。
  圖1 XMPP工作原理,所有從一個client到另一個client的jabber消息和數(shù)據(jù)都要通過xmpp server。   1)client連接到server
  2)server利用本地目錄系統(tǒng)的證書對其認證
  3)client制定目標(biāo)地址讓server告知目標(biāo)狀態(tài)
  4)server查找連接并進行相互認證
  5)client間進行交互
  3.2 web客戶端與openfire通信線程的設(shè)計
  web客戶端與openfire通信線程設(shè)計分三個過程,第一個過程是登錄,接著第二個過程是正常即時通信,第三個過程,退出系統(tǒng)。登錄與退出啟用相同的線程,由webim的發(fā)起。正常通信,由openfire發(fā)起。當(dāng)客戶端首次登錄時,啟用一個客戶端請求線程,用來從openfire獲取用戶好友列表信息和用戶個人信息及用戶狀態(tài)信息來更新當(dāng)前用戶的信息。當(dāng)通信結(jié)束客戶退出系統(tǒng),該線程立即被激活,通過發(fā)送XMPP的XML數(shù)據(jù)流,類似于truetrue等信息用來描述用戶下線狀態(tài)或離線狀態(tài)信息給openfire,openfire通過長連接進行推送該用戶的列表用戶。好友的客戶端得到更新,同時客戶端和服務(wù)器端所建立的HTTP長連接的進行釋放,流程如圖2所示。
  當(dāng)客戶端登錄成功后,WebIM端將啟動一個HTTP的長連接來監(jiān)聽服務(wù)器端更新的數(shù)據(jù),服務(wù)器將是將變化的數(shù)據(jù)以基于xmpp的XML流方式通過長連接通道傳輸客戶端瀏覽器,客戶端UI界面及交換的數(shù)據(jù)信息得到更新。具體流程如圖3所示。
  3.3 客戶端的實現(xiàn)
  本系統(tǒng)客戶端的實現(xiàn)使用xmpp的Http和Openfire通信的JabberHTTPBind。JabberHTTPBind是jabber提供的XMPP協(xié)議通信的Http bind發(fā)送的形式,它可以完成WebBrowser和Openfire建立長連接通信。Web客戶端用戶ClientA通過jsjac.js核心通信模塊庫發(fā)送一條消息到JabberHTTPBind,然后JabberHTTPBind會向Openfire發(fā)送XMPP協(xié)議的XML的信息。Openfire服務(wù)器接收到xml流后進行解析,然后發(fā)送給指定的ClientB。用戶。JabberHTTPBind獲取到Openfire 服務(wù)器發(fā)送的數(shù)據(jù)后,解析報文向當(dāng)前Servlet容器中的鏈接的Session中找到指定的用戶再發(fā)送數(shù)據(jù)給ClientB,如圖4所示。WebBrowser端用的是jsjac和JabberHTTPBind建立的連接,所有數(shù)據(jù)都要經(jīng)過JabberHTTPBind解析/轉(zhuǎn)換發(fā)送給Openfire服務(wù)器。
  
  圖4 web客戶端與openfire服務(wù)器的通信方式
  Web客戶端的詳細實現(xiàn):
  1)客戶端UI,包括聊天窗口,登陸、消息、日志等
  與openfire服務(wù)器連接地址設(shè)置,window["serverDomin"]指定其中一個openfire服務(wù)器的地址,否則客戶端無法通訊。
  
  建立一個聊天窗口應(yīng)用,并設(shè)置發(fā)送者和消息接收者,登陸到openfire服務(wù)器。退出openfire登陸,斷開鏈接。建立一個新聊天窗口,并設(shè)置消息接收者的實現(xiàn)。
  
  
  $WebIM()方法是主函數(shù),它可以完成聊天窗口的創(chuàng)建。$.WebIM.newWebIM方法是新創(chuàng)建一個新用戶一個窗口,這個窗口代表了一個新的用戶。
  
  2)本地聊天應(yīng)用核心代碼
  包括發(fā)送消息; 獲取即將發(fā)送的內(nèi)容;接收區(qū)域?qū)懴ⅲ?判斷是否是移動端會話信息;如果是就發(fā)送純文本信息,否則就發(fā)送其他代碼; 遠程發(fā)送消息; 非移動端通信 可以發(fā)送html代碼; 清空發(fā)送區(qū)域。
  
  3)遠程聊天JavaScript核心代碼,與jsjac庫關(guān)聯(lián)的
  構(gòu)建jsjac的message對象
  
  安裝(注冊)Connection事件模型
  
  向chat接收信息區(qū)域?qū)懴?
  
  建立連接觸發(fā)事件的方法
  

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    欧美韩国日本精品在线| 国产日韩精品激情在线观看| 国产精品美女午夜视频| 91人妻丝袜一区二区三区| 精品国产av一区二区三区不卡蜜| 日韩中文字幕人妻精品| 偷自拍亚洲欧美一区二页| 成人欧美精品一区二区三区 | 国产精品久久女同磨豆腐| 国产又粗又猛又爽色噜噜| 深夜视频成人在线观看| 视频在线观看色一区二区| 久久精品国产亚洲av麻豆| 黄片免费观看一区二区| av在线免费观看在线免费观看 | 欧美日韩三区在线观看| 国产又粗又深又猛又爽又黄| 三级高清有码在线观看| 99久久精品免费看国产高清| 亚洲国产精品久久综合网| 国产高清三级视频在线观看| 中文字幕乱码一区二区三区四区 | 男女一进一出午夜视频| 日韩一区二区免费在线观看| 黄片三级免费在线观看| 日韩毛片视频免费观看| 中文字幕无线码一区欧美| 国产欧美一区二区久久| 国产精品欧美激情在线观看| 日本一级特黄大片国产| 国产传媒精品视频一区| 日韩欧美国产高清在线| 办公室丝袜高跟秘书国产| 91久久精品国产成人| 日本精品中文字幕人妻| 欧美精品一区二区三区白虎| 国产又色又粗又黄又爽| 欧美大粗爽一区二区三区| 丰满熟女少妇一区二区三区| 日韩成人中文字幕在线一区| 国产乱人伦精品一区二区三区四区|