<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-57  評(píng)論-117  文章-1  trackbacks-0

    這個(gè)解決方法已經(jīng)定制下來(lái)很久了,上一段時(shí)間比較忙,沒(méi)有時(shí)間整這些東西。最近稍微好些,不怎么加班。所以抽空總結(jié)下,同時(shí)也分享給大家,也算是給大家一個(gè)借鑒吧!或許這并不是最好的解決方案,但只要能滿足當(dāng)前需求的最好方案也算是最好的解決方案,誰(shuí)說(shuō)不是呢!O(∩_∩)O~

     

    我們采用的方案如下:

    先看圖

    xmpp-server-client

    上圖的流程大致上是這樣的:

    手機(jī)端向PC端發(fā)送聊天內(nèi)容

    1、手機(jī)端程序通過(guò)Socket連接服務(wù)器端的ServerSocket

    2、然后服務(wù)器端根據(jù)手機(jī)Mobile客戶端發(fā)送過(guò)來(lái)統(tǒng)一規(guī)范的報(bào)文或聊天內(nèi)容,進(jìn)行解析

    3、然后將解析的內(nèi)容,再用smack框架轉(zhuǎn)發(fā)到openfire服務(wù)器

    4、最后由openfire服務(wù)器向客戶端(BS、CS、PhoneClient)程序發(fā)送聊天信息。這里的客戶端可以是pc上的瀏覽器,pc上的桌面應(yīng)用,手機(jī)應(yīng)用等

    5、PC客戶端BS程序(用http bind方式監(jiān)聽(tīng))的長(zhǎng)連接監(jiān)聽(tīng)到openfire服務(wù)器發(fā)送過(guò)來(lái)的數(shù)據(jù),直接在頁(yè)面中顯示

     

    同樣,PC客戶端向手機(jī)端發(fā)送聊天內(nèi)容

    1、PC客戶端(BS)可以直接用http bind(xmpp 提供的http請(qǐng)求的長(zhǎng)連接方式)直接向openfire服務(wù)器發(fā)送聊天數(shù)據(jù);

    2、然后openfire服務(wù)器接收到聊天內(nèi)容的時(shí)候,這時(shí)候socket服務(wù)器中的smack框架中有一個(gè)聊天內(nèi)容的監(jiān)聽(tīng)器

    3、監(jiān)聽(tīng)到PC端向openfire發(fā)送的內(nèi)容后,會(huì)用socket的流向手機(jī)端發(fā)送我們定義好的報(bào)文或是聊天內(nèi)容

    4、手機(jī)端的socket會(huì)不停的輪詢(可以模擬心跳式長(zhǎng)連接的方式),判斷是否有消息到達(dá),如果有則顯示

     

    而普通的聊天程序的流程則是客戶端發(fā)送信息到openfire服務(wù)器,openfire服務(wù)器再將消息轉(zhuǎn)發(fā)給其他客戶端。他們省去了socket服務(wù)器這部分,那我們?yōu)槭裁匆由蟬ocket服務(wù)器這部分呢?

    我們這樣做也是有自己的道理的:

    首先,如果讓手機(jī)端自己實(shí)現(xiàn)向openfire服務(wù)器發(fā)送程序的代碼,那工作量是相當(dāng)大的。因?yàn)槊總€(gè)手機(jī)平臺(tái)使用的語(yǔ)言都不同,每個(gè)平臺(tái)都需要實(shí)現(xiàn)向openfire服務(wù)器發(fā)送聊天信息的報(bào)文。這其實(shí)就是在做重復(fù)的工作,而且每個(gè)平臺(tái)實(shí)現(xiàn)向手機(jī)端發(fā)送報(bào)文信息的技術(shù)會(huì)讓每個(gè)手機(jī)端的開(kāi)發(fā)人員都要學(xué)會(huì)一套和openfire交互的代碼。這勢(shì)必會(huì)重復(fù)工作、重復(fù)相同業(yè)務(wù)的代碼。所以,把這些代碼放在一個(gè)tcp/ip的socket中轉(zhuǎn)服務(wù)器進(jìn)行統(tǒng)一發(fā)送,這也是有好處的。

    其次,把所以發(fā)送消息在報(bào)文在socket服務(wù)器完成,可以對(duì)業(yè)務(wù)進(jìn)行一個(gè)統(tǒng)一的處理、消息過(guò)濾。

     

    手機(jī)端被否決的解決方案,供參考

    手機(jī)端用http長(zhǎng)連接的方式,這個(gè)是不行的

    其一、手機(jī)的移動(dòng)網(wǎng)絡(luò)不穩(wěn)定,長(zhǎng)連接會(huì)經(jīng)常斷掉,當(dāng)然你可以自動(dòng)進(jìn)行重連

    其二、長(zhǎng)連接一直連接在服務(wù)器上,占用服務(wù)器資源。當(dāng)然你可以使用心跳式長(zhǎng)連接或是輪詢方式

    其三、手機(jī)端一直連接服務(wù)器會(huì)使用手機(jī)端用戶的網(wǎng)絡(luò)帶寬流量(流量不是免費(fèi)的,客戶會(huì)怎么想)

    其四、手機(jī)端一直連著服務(wù)器,對(duì)手機(jī)的電量也有消耗(現(xiàn)在智能機(jī)解決電量也是一個(gè)問(wèn)題)



    作者:hoojo
    出處:
    blog:http://blog.csdn.net/IBM_hoojo
             http://hoojo.cnblogs.com
    本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。


    版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處 本文出自:
    分享道版權(quán)所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處,謝謝
    主站蜘蛛池模板: 亚洲国产成人私人影院| 色播在线永久免费视频| 亚洲av中文无码乱人伦在线咪咕| 青青草国产免费国产是公开| 免费二级毛片免费完整视频| 免费精品国自产拍在线播放 | 91免费资源网站入口| 亚洲六月丁香六月婷婷色伊人| 国产91色综合久久免费分享| 亚洲乱码一二三四区国产| 日本在线高清免费爱做网站| 国产V亚洲V天堂A无码| 日韩电影免费在线观看中文字幕| 亚洲一区二区在线视频| 成人浮力影院免费看| 亚洲AV日韩综合一区| 亚洲国产精品成人久久蜜臀 | 可以免费观看的毛片| 亚洲成电影在线观看青青| 18禁无遮挡无码网站免费| 亚洲精华国产精华精华液| 麻豆视频免费播放| 国产精品亚洲自在线播放页码| 成年女人毛片免费播放人| 国产精品亚洲а∨无码播放不卡| 亚洲情侣偷拍精品| 日韩免费无码一区二区三区| 亚洲娇小性xxxx色| 亚洲成人一区二区| 无码一区二区三区免费| 狠狠色伊人亚洲综合网站色 | 久久精品亚洲日本波多野结衣| 亚洲精品一级无码中文字幕| 久9热免费精品视频在线观看| 国产成人精品日本亚洲专区6| 亚洲成年看片在线观看| h视频在线免费看| 一级毛片在线免费播放| 亚洲系列国产精品制服丝袜第| 日韩免费高清视频网站| 久久精品成人免费看|