日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web端即时通讯

發(fā)布時間:2024/9/20 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web端即时通讯 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

comet技術(shù)

瀏覽器作為 Web 應(yīng)用的前臺,自身的處理功能比較有限。瀏覽器的發(fā)展需要客戶端升級軟件,同時由于客戶端瀏覽器軟件的多樣性,在某種意義上,也影響了瀏覽器新技術(shù)的推廣。在 Web 應(yīng)用中,瀏覽器的主要工作是發(fā)送請求、解析服務(wù)器返回的信息以不同的風(fēng)格顯示。AJAX 是瀏覽器技術(shù)發(fā)展的成果,通過在瀏覽器端發(fā)送異步請求,提高了單用戶操作的響應(yīng)性。但 Web 本質(zhì)上是一個多用戶的系統(tǒng),對任何用戶來說,可以認(rèn)為服務(wù)器是另外一個用戶。現(xiàn)有 AJAX 技術(shù)的發(fā)展并不能解決在一個多用戶的 Web 應(yīng)用中,將更新的信息實時傳送給客戶端,從而用戶可能在“過時”的信息下進行操作。而 AJAX 的應(yīng)用又使后臺數(shù)據(jù)更新更加頻繁成為可能。


隨著互聯(lián)網(wǎng)的發(fā)展,web 應(yīng)用層出不窮,也不乏各種網(wǎng)站監(jiān)控、即時報價、即時通訊系統(tǒng),為了讓用戶得到更好的體驗,服務(wù)器需要頻繁的向客戶端推送信息。開發(fā)者一般會采用基于 AJAX 的長輪詢方式或者基于 iframe 及 htmlfile 的流方式處理。當(dāng)然有些程序需要在客戶端安裝各種插件( Java applet 或者 Flash )來支持性能比較良好的“推”信息。


http協(xié)議中的長、短連接

短連接的操作步驟是:建立連接——數(shù)據(jù)傳輸——關(guān)閉連接...建立連接——數(shù)據(jù)傳輸——關(guān)閉連接
長連接的操作步驟是:建立連接——數(shù)據(jù)傳輸...(保持連接)...數(shù)據(jù)傳輸——關(guān)閉連接


長連接與短連接的不同主要在于client和server采取的關(guān)閉策略不同。短連接在建立連接以后只進行一次數(shù)據(jù)傳輸就關(guān)閉連接,? ? 而長連接在建立連接以后會進行多次數(shù)據(jù)數(shù)據(jù)傳輸直至關(guān)閉連接(長連接中關(guān)閉連接通過Connection:closed頭部字段)。


輪詢

輪詢是一種“拉”取信息的工作模式。設(shè)置一個定時器,定時詢問服務(wù)器是否有信息,每次建立連接傳輸數(shù)據(jù)之后,鏈接會關(guān)閉。

長輪詢

只要服務(wù)器斷開連接,客戶端馬上連接,不讓他有一刻的休息時間,這就是長輪詢。

數(shù)據(jù)流

數(shù)據(jù)流方式,在建立的連接斷開之前,也就是 readystate 狀態(tài)為 3 的時候接受數(shù)據(jù),但是麻煩的事情也在這里,因為數(shù)據(jù)正在傳輸,你拿到的 xhr.response 可能就是半截數(shù)據(jù),所以呢,最好定義一個數(shù)據(jù)傳輸?shù)膮f(xié)議,比如前2個字節(jié)表示字符串的長度,然后你只獲取這個長度的內(nèi)容,接著改變游標(biāo)的位置。


在ajax還沒有進入web專題之前,我們已經(jīng)擁有了一個法寶,那就是iframe,利用iframe照樣可以異步獲取數(shù)據(jù),對于低版本IE可以使用iframe開接受數(shù)據(jù)流。

websocket

websocket是前端一個神器,ajax用了這么久了,相關(guān)技術(shù)也是很成熟,不過要實現(xiàn)個數(shù)據(jù)的拉取確實十分不易,從上面的代碼中也看到了,各種兼容性問題,各種細(xì)節(jié)處理問題,自從有了websocket,哈哈,一口氣上五樓.

EventSource

情非得已就別考慮這第六種方式了,雖說兼容性最好,要是不懂a(chǎn)s,出了點bug你也不會調(diào)試。

具體實現(xiàn)方法:在 HTML 頁面中內(nèi)嵌入一個使用了 XMLSocket 類的 Flash 程序。JavaScript 通過調(diào)用此 Flash 程序提供的套接口接口與服務(wù)器端的套接口進行通信。JavaScript 在收到服務(wù)器端以 XML 格式傳送的信息后可以很容易地控制 HTML 頁面的內(nèi)容顯示。


小結(jié)

對于輪詢:這種方式應(yīng)該是最沒技術(shù)含量的,操作起來最方便,不過是及時性不強,把定時器的間隔時間設(shè)置的短一些可以稍微得到緩和。

對于長連接:算是比較不錯的一個web通訊方式,不過每次斷開連接,比較耗服務(wù)器資源,客戶端到無所謂。

對于數(shù)據(jù)流:他和長輪詢不同之處是接受數(shù)據(jù)的時間不一樣,數(shù)據(jù)流是readystate為3的時候接受,低版本IE不太兼容,處理起來略麻煩,而且還要自己設(shè)計數(shù)據(jù)傳輸協(xié)議。不過他對資源的消耗比上面幾種都可觀。

對于websocket與EventSource:只有高級瀏覽器支持





轉(zhuǎn)載于:https://my.oschina.net/bosscheng/blog/344185

總結(jié)

以上是生活随笔為你收集整理的web端即时通讯的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。