麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > AJAX > 正文

利用Ajax實現長連接(模擬推送)

2024-09-01 08:26:00
字體:
來源:轉載
供稿:網友

 

      很多程序都可以通過socket來實現長連接,實現消息的即時推送。但由于http請求一般都是短連接,一次請求結束,就會斷開與服務器的連接,服務器不能主動推送數據到客戶端,而只能由客戶端發起請求,但有些時候,需要在web上實現即時的消息傳輸,比如即時聊天、股票動態信息等。
    在Ajax技術被發掘以前,在網頁上實現無刷新的即時聊天,似乎是很困難的事情,但由于Ajax技術的興起,人們可以進一步來挖掘它的潛力了,象gmail、google gtalk的網頁版,都是Ajax長連接的重要應用,目前很多網站可能都已經在使用長連接技術了,比如SNS網站的即時聊天。

1.Ajax短連接方式實現網頁聊天

自己畫了一個模型圖:

 

     常規的短連接模式下,都是通過不間斷刷新請求實現的,比如每間隔3秒發送一次Ajax請求,3秒更新一下數據,然后就這樣不間斷刷新下去,直到用戶關閉網頁。這樣所帶來的弊端就是,如果用戶很長時間都沒有操作,每次刷新都不會返回新數據,這樣就造成了資源的浪費,很多請求都是沒必要的;另外一個問題,就是用戶的輸入,跟數據的請求不是同步的,會造成一定的信息延遲。

2.Ajax長連接方式實現網頁聊天

模型圖:

 

      Ajax長連接模式,它的刷新是根據數據來執行的,如果有新數據返回,接收并解析顯示數據,然后發起新的Ajax請求,如果一段時間內,用戶沒有操作,則連接處于睡眠狀態,一直等待有用戶輸入或者請求超時,然后發起下個Ajax請求。這樣做的好處是,每個消息都會即時推送到客戶端,延遲極少;另外每次請求都是有意義的,與短連接對比,效率要高很多。但對于一個用戶量很多,并且操作非常頻繁的網站,長連接模式也會出現過于頻繁的刷新問題。目前IE對于HTTP連接數是有限制的,每個網頁只能同時進行兩個長連接,第三個長連接會被阻塞。

利用php在后臺sleep,自己做了個模擬的程序,查看效果

      看了一下別人寫的Ajax長連接聊天的案例,以php為例,基本上是在后臺進行不間斷的檢測,如果有新數據就推送,如果沒有新數據,就一直阻塞,直到30秒超時,然后客戶端重新發起下一個請求。后臺判斷里重要的一行代碼:usleep(10000); 就是暫停10毫秒,緩解一下CPU壓力,個人感覺如果暫停100毫秒,時間延遲也是很難感覺到的。這種方法基本就是把前端的循環,搬到了后臺,中間減少了網絡傳輸的環節,如果是一個Ajax的即時聊天系統,要保存用戶的聊天記錄,那就需要跟數據庫相結合,每秒10次以上的數據查詢,這個與短連接比,必定加大了數據庫的壓力,具體怎么優化,這個應該是交給服務器端人員來處理了。

如果想要了解更多的內容請Google一下comet,或者看看這里(一個很不錯的框架,Ajax Push Engine),這個網站有很多demo,效果很帥。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 美女91视频 | 国产成人精品一区二区三区电影 | 播色网 | 欧美一区在线观看视频 | 国产精品自拍av | 一级大黄毛片 | 麻豆视频在线观看 | 毛片免费试看 | 极品xxxx欧美一区二区 | 国产精品成人免费一区久久羞羞 | 中文区永久区 | 国产免费中文字幕 | 久久久久免费电影 | 久久久经典视频 | 欧美中文字幕在线视频 | 久久久国产视频 | 三级xxxx| av在线免费网址 | 草久网 | 97zyz成人免费视频 | 在线成人免费观看www | 一本色道久久综合狠狠躁篇适合什么人看 | 精品亚洲视频在线观看 | 日韩伦理电影免费观看 | 国产精品久久久免费观看 | 欧美成人午夜一区二区三区 | 久草在线视频福利 | 久久久免费观看完整版 | 黄色免费在线视频网站 | 成人在线视频国产 | 国产精品99久久久久久宅女 | 九九视频在线观看6 | av手机在线电影 | 精品国内视频 | 九九热九九爱 | 毛片视频播放 | 日本在线国产 | 网站毛片 | 女人叉开腿让男人桶 | 国产在线色 | 色综合久久久久久久久久久 |