免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
基于openfire和xmpp協(xié)議的Webim客戶端設(shè)計與實現(xiàn)
    摘要:WebIM,是基于HTTP協(xié)議,系統(tǒng)采用B/S結(jié)構(gòu)進(jìn)行開發(fā),客戶端以網(wǎng)頁的形式實現(xiàn)與openfire服務(wù)器及其它客戶端的及時通信。這種B/S結(jié)構(gòu)的系統(tǒng)功能在服務(wù)器端統(tǒng)一管理與維護,既降低了維護難度,也使系統(tǒng)部署費用得到減少。因此,Web IM技術(shù)將在基于即時通信及Web的遠(yuǎn)程監(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ù)器推送方式使用戶在體驗方面得到改進(jìn),Web用戶將不會感覺到消息的延遲。
中國論文網(wǎng) http://www.xzbu.com/8/view-5662214.htm
  關(guān)鍵詞:IM;WebIM;通信;網(wǎng)絡(luò)
  中圖分類號:TP311 文獻(xiàn)標(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ù)器負(fù)載過重。該文通過對現(xiàn)有WebIM進(jìn)行了研究,分析了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ù)進(jìn)行異步通信,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ù)器的負(fù)載,增大延遲。另外如果客戶之間的消息更新的頻率很慢時,服務(wù)器需要額外去響應(yīng)客戶端的心跳信息,并還需返回類似于false的數(shù)據(jù)給客戶端,這樣就為服務(wù)器端帶來了負(fù)載上的壓力,也增大延遲。
  2 xmpp技術(shù)帶來的改變
  xmpp通過建立一個和Openfire服務(wù)器的長連接,當(dāng)openfire服務(wù)器獲取了新的數(shù)據(jù)時,通過該長連接即時向客戶端進(jìn)行推送,客戶端從長連接管道中得到了數(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)系人的消息:公告消息,來進(jì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)的證書對其認(rèn)證
  3)client制定目標(biāo)地址讓server告知目標(biāo)狀態(tài)
  4)server查找連接并進(jìn)行相互認(rèn)證
  5)client間進(jìn)行交互
  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通過長連接進(jìn)行推送該用戶的列表用戶。好友的客戶端得到更新,同時客戶端和服務(wù)器端所建立的HTTP長連接的進(jìn)行釋放,流程如圖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流后進(jìn)行解析,然后發(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客戶端的詳細(xì)實現(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ā)送其他代碼; 遠(yuǎn)程發(fā)送消息; 非移動端通信 可以發(fā)送html代碼; 清空發(fā)送區(qū)域。
  
  3)遠(yuǎn)程聊天JavaScript核心代碼,與jsjac庫關(guān)聯(lián)的
  構(gòu)建jsjac的message對象
  
  安裝(注冊)Connection事件模型
  
  向chat接收信息區(qū)域?qū)懴?
  
  建立連接觸發(fā)事件的方法
  
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于XMPP協(xié)議(openfire服務(wù)器)的消息推送實現(xiàn)
MQTT協(xié)議(一):理論篇
Android實現(xiàn)推送方式解決方案
Android推送通知指南
androidpn 作為Android推送方案存在的問題
消息推送ABC
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服