淺談Web下的即時(shí)尋呼技術(shù)
更新時(shí)間:2007年03月12日 00:00:00 作者:
Web下(不考慮使用activex控件的那種)即時(shí)尋呼一般都是基于“拉”技術(shù),即每隔一段時(shí)間向服務(wù)器獲取最新消息,然后反映到客戶端,基于“拉”技術(shù),一般有幾種形式:
frame/iframe刷新:一般是用一個隱藏的iframe/frame頁面,定時(shí)刷新,從服務(wù)器獲取最新消息,并執(zhí)行腳本,將消息反映到客戶端。
這種方法的好處是兼容性好,適用于所有支持frame和腳本的瀏覽器,缺點(diǎn)就是因?yàn)槭蔷W(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é)合客戶端腳本的定時(shí)器:setTimeout("Function()", TimeoutInterval),定時(shí)從服務(wù)器獲取數(shù)據(jù)。
尤其要注意一點(diǎn)是不管是 XmlDom還是XmlHttp,都有“同步”和“異步”之說,如果是“同步”,則瀏覽器會等到把所獲取的Xml全部下載完才繼續(xù)執(zhí)行,如果是“異步”,則瀏覽器會不管它有沒有下載完,直接繼續(xù)下一步執(zhí)行。對于Web即時(shí)尋呼,還是推薦使用“異步”方式,因?yàn)椤巴健狈绞胶芸赡軙斐蔀g覽器“假死”的情況,對客戶來說很不友好。使用“異步”就可以避免這個問題,然后可以在onreadystatechange事件中判斷是否已經(jīng)加載完,然后解析消息。
這種方式的好處是對于客戶來說感覺不到瀏覽器在刷新,缺點(diǎn)是必須要客戶端是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)用,其實(shí)即使沒有WebService.htc,我們也可以自己來解析,因?yàn)?nbsp;WebService實(shí)質(zhì)也就是xml了,在客戶端可以結(jié)合XmlDom來解析。然后借助定時(shí)器,也可以做到無刷新來獲取服務(wù)器端消息。
這種方式的優(yōu)缺點(diǎn)和第二種方式差不多。國外有個聊天室就是使用的這種技術(shù)。
frame/iframe刷新:一般是用一個隱藏的iframe/frame頁面,定時(shí)刷新,從服務(wù)器獲取最新消息,并執(zhí)行腳本,將消息反映到客戶端。
這種方法的好處是兼容性好,適用于所有支持frame和腳本的瀏覽器,缺點(diǎn)就是因?yàn)槭蔷W(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é)合客戶端腳本的定時(shí)器:setTimeout("Function()", TimeoutInterval),定時(shí)從服務(wù)器獲取數(shù)據(jù)。
尤其要注意一點(diǎn)是不管是 XmlDom還是XmlHttp,都有“同步”和“異步”之說,如果是“同步”,則瀏覽器會等到把所獲取的Xml全部下載完才繼續(xù)執(zhí)行,如果是“異步”,則瀏覽器會不管它有沒有下載完,直接繼續(xù)下一步執(zhí)行。對于Web即時(shí)尋呼,還是推薦使用“異步”方式,因?yàn)椤巴健狈绞胶芸赡軙斐蔀g覽器“假死”的情況,對客戶來說很不友好。使用“異步”就可以避免這個問題,然后可以在onreadystatechange事件中判斷是否已經(jīng)加載完,然后解析消息。
這種方式的好處是對于客戶來說感覺不到瀏覽器在刷新,缺點(diǎn)是必須要客戶端是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)用,其實(shí)即使沒有WebService.htc,我們也可以自己來解析,因?yàn)?nbsp;WebService實(shí)質(zhì)也就是xml了,在客戶端可以結(jié)合XmlDom來解析。然后借助定時(shí)器,也可以做到無刷新來獲取服務(wù)器端消息。
這種方式的優(yōu)缺點(diǎn)和第二種方式差不多。國外有個聊天室就是使用的這種技術(shù)。
相關(guān)文章
div flash firefox div層總是被flash層遮蓋
今天測試div層和flash的交互,發(fā)現(xiàn)div層總是被flash層遮蓋,在百度上找了一會,說是加個<param name="wmode" value="transparent" />就成了,我加完后在IE下問題是解決了,但是FF下好像沒有反應(yīng),后來才知道IE中和FF加的代碼是不一樣的2008-11-11
收集整理的http/1.1 500 server error錯誤的解決方法
http/1.1 500 server error,剛才訪問正常的頁面,突然出問題樂,特找了一下,然后整理方便大家解決問題2007-12-12
雙擊桌面IE圖標(biāo)出現(xiàn)打開方式的問題的解決方法
雙擊桌面IE圖標(biāo)出現(xiàn)打開方式的問題的解決方法...2007-08-08

