淺談Web下的即時尋呼技術(shù)
更新時間:2007年03月12日 00:00:00 作者:
Web下(不考慮使用activex控件的那種)即時尋呼一般都是基于“拉”技術(shù),即每隔一段時間向服務(wù)器獲取最新消息,然后反映到客戶端,基于“拉”技術(shù),一般有幾種形式:
frame/iframe刷新:一般是用一個隱藏的iframe/frame頁面,定時刷新,從服務(wù)器獲取最新消息,并執(zhí)行腳本,將消息反映到客戶端。
這種方法的好處是兼容性好,適用于所有支持frame和腳本的瀏覽器,缺點就是因為是網(wǎng)頁直接刷新,有可能在某些機(jī)子上每次刷新都會有“吧嗒”的聲音,如果瀏覽器狀態(tài)欄可見,上面的進(jìn)度條會一閃一閃的,比較煩人。例如微軟最新推出的Msn Web Messenger即是基于此技術(shù)。
XmlHttp/XmlDom 無刷新:這種無刷新技術(shù)一度讓W(xué)eb開發(fā)者亢奮不已。在客戶端,XmlDom可以根據(jù)URL獲取服務(wù)器端的Xml文件并返回為一個 XmlDocument,而XmlHttp不僅可以獲取xml和html,還可以向服務(wù)器端發(fā)送一個XmlDocument,而且,結(jié)合客戶端腳本的定時器:setTimeout("Function()", TimeoutInterval),定時從服務(wù)器獲取數(shù)據(jù)。
尤其要注意一點是不管是 XmlDom還是XmlHttp,都有“同步”和“異步”之說,如果是“同步”,則瀏覽器會等到把所獲取的Xml全部下載完才繼續(xù)執(zhí)行,如果是“異步”,則瀏覽器會不管它有沒有下載完,直接繼續(xù)下一步執(zhí)行。對于Web即時尋呼,還是推薦使用“異步”方式,因為“同步”方式很可能會造成瀏覽器“假死”的情況,對客戶來說很不友好。使用“異步”就可以避免這個問題,然后可以在onreadystatechange事件中判斷是否已經(jīng)加載完,然后解析消息。
這種方式的好處是對于客戶來說感覺不到瀏覽器在刷新,缺點是必須要客戶端是IE,并且安裝了msxml,所以兼容性不是很好。
BTW: 聽說Asp.Net 2.0對于這種無刷新進(jìn)行了封裝,可惜沒試過,不知道兼容性如何:)
腳本調(diào)用WebService無刷新:WebService是個好東西,js也可以調(diào)用webserice,微軟專門有一個WebService.htc,將對WebService的調(diào)用進(jìn)行了封裝,可以非常方便的調(diào)用,其實即使沒有WebService.htc,我們也可以自己來解析,因為 WebService實質(zhì)也就是xml了,在客戶端可以結(jié)合XmlDom來解析。然后借助定時器,也可以做到無刷新來獲取服務(wù)器端消息。
這種方式的優(yōu)缺點和第二種方式差不多。國外有個聊天室就是使用的這種技術(shù)。
frame/iframe刷新:一般是用一個隱藏的iframe/frame頁面,定時刷新,從服務(wù)器獲取最新消息,并執(zhí)行腳本,將消息反映到客戶端。
這種方法的好處是兼容性好,適用于所有支持frame和腳本的瀏覽器,缺點就是因為是網(wǎng)頁直接刷新,有可能在某些機(jī)子上每次刷新都會有“吧嗒”的聲音,如果瀏覽器狀態(tài)欄可見,上面的進(jìn)度條會一閃一閃的,比較煩人。例如微軟最新推出的Msn Web Messenger即是基于此技術(shù)。
XmlHttp/XmlDom 無刷新:這種無刷新技術(shù)一度讓W(xué)eb開發(fā)者亢奮不已。在客戶端,XmlDom可以根據(jù)URL獲取服務(wù)器端的Xml文件并返回為一個 XmlDocument,而XmlHttp不僅可以獲取xml和html,還可以向服務(wù)器端發(fā)送一個XmlDocument,而且,結(jié)合客戶端腳本的定時器:setTimeout("Function()", TimeoutInterval),定時從服務(wù)器獲取數(shù)據(jù)。
尤其要注意一點是不管是 XmlDom還是XmlHttp,都有“同步”和“異步”之說,如果是“同步”,則瀏覽器會等到把所獲取的Xml全部下載完才繼續(xù)執(zhí)行,如果是“異步”,則瀏覽器會不管它有沒有下載完,直接繼續(xù)下一步執(zhí)行。對于Web即時尋呼,還是推薦使用“異步”方式,因為“同步”方式很可能會造成瀏覽器“假死”的情況,對客戶來說很不友好。使用“異步”就可以避免這個問題,然后可以在onreadystatechange事件中判斷是否已經(jīng)加載完,然后解析消息。
這種方式的好處是對于客戶來說感覺不到瀏覽器在刷新,缺點是必須要客戶端是IE,并且安裝了msxml,所以兼容性不是很好。
BTW: 聽說Asp.Net 2.0對于這種無刷新進(jìn)行了封裝,可惜沒試過,不知道兼容性如何:)
腳本調(diào)用WebService無刷新:WebService是個好東西,js也可以調(diào)用webserice,微軟專門有一個WebService.htc,將對WebService的調(diào)用進(jìn)行了封裝,可以非常方便的調(diào)用,其實即使沒有WebService.htc,我們也可以自己來解析,因為 WebService實質(zhì)也就是xml了,在客戶端可以結(jié)合XmlDom來解析。然后借助定時器,也可以做到無刷新來獲取服務(wù)器端消息。
這種方式的優(yōu)缺點和第二種方式差不多。國外有個聊天室就是使用的這種技術(shù)。
相關(guān)文章
ftp上傳時數(shù)據(jù)Socket錯誤連接超時的解決方法
ftp上傳時數(shù)據(jù)Socket錯誤連接超時的解決方法...2007-07-07重現(xiàn) Office 2007 中的菜單和工具欄的方法
重現(xiàn) Office 2007 中的菜單和工具欄的方法...2007-05-05Google西聯(lián)匯款取款詳細(xì)流程 大家這個月就可以了啊
Google西聯(lián)匯款取款詳細(xì)流程 大家這個月就可以了啊...2007-10-10IE修改INI的優(yōu)化提速方法附IE 6.INI文件
IE修改INI的優(yōu)化提速方法附IE 6.INI文件...2007-03-03服務(wù)器中TIME_WAIT狀態(tài)過多時的排查分析
這篇文章主要為大家介紹了服務(wù)器中TIME_WAIT狀態(tài)過多時的排查分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04談?wù)劶夹g(shù)原則,技術(shù)學(xué)習(xí)方法個人總結(jié)
談?wù)劶夹g(shù)原則,技術(shù)學(xué)習(xí)方法,代碼閱讀及其它個人總結(jié)這篇文章是前一陣在水木BBS上和別人討論中偶自己發(fā)言的摘編,是偶這幾年開發(fā)過程完全經(jīng)驗式的總結(jié)。完全個人經(jīng)驗,供批判。2008-06-06釋放C盤(系統(tǒng)盤)空間的27招優(yōu)化技巧
釋放C盤(系統(tǒng)盤)空間的27招優(yōu)化技巧...2006-08-08