轮询和长轮询
輪詢:客戶端定時(shí)向服務(wù)器發(fā)送Ajax請(qǐng)求,服務(wù)器接到請(qǐng)求后馬上返回響應(yīng)信息并關(guān)閉連接。
優(yōu)點(diǎn):后端程序編寫比較容易。
缺點(diǎn):請(qǐng)求中有大半是無用,浪費(fèi)帶寬和服務(wù)器資源。
實(shí)例:適于小型應(yīng)用。
長(zhǎng)輪詢:客戶端向服務(wù)器發(fā)送Ajax請(qǐng)求,服務(wù)器接到請(qǐng)求后hold住連接,直到有新消息才返回響應(yīng)信息并關(guān)閉連接,客戶端處理完響應(yīng)信息后再向服務(wù)器發(fā)送新的請(qǐng)求。
優(yōu)點(diǎn):在無消息的情況下不會(huì)頻繁的請(qǐng)求。
缺點(diǎn):服務(wù)器hold連接會(huì)消耗資源。
實(shí)例:WebQQ、Hi網(wǎng)頁版、Facebook IM。
另外,對(duì)于長(zhǎng)連接和socket連接也有區(qū)分:
長(zhǎng)連接:在頁面里嵌入一個(gè)隱蔵iframe,將這個(gè)隱蔵iframe的src屬性設(shè)為對(duì)一個(gè)長(zhǎng)連接的請(qǐng)求,服務(wù)器端就能源源不斷地往客戶端輸入數(shù)據(jù)。
優(yōu)點(diǎn):消息即時(shí)到達(dá),不發(fā)無用請(qǐng)求。
缺點(diǎn):服務(wù)器維護(hù)一個(gè)長(zhǎng)連接會(huì)增加開銷。
實(shí)例:Gmail聊天
Flash Socket:在頁面中內(nèi)嵌入一個(gè)使用了Socket類的 Flash 程序JavaScript通過調(diào)用此Flash程序提供的Socket接口與服務(wù)器端的Socket接口進(jìn)行通信,JavaScript在收到服務(wù)器端傳送的信息后控制頁面的顯示。
優(yōu)點(diǎn):實(shí)現(xiàn)真正的即時(shí)通信,而不是偽即時(shí)。
缺點(diǎn):客戶端必須安裝Flash插件;非HTTP協(xié)議,無法自動(dòng)穿越防火墻。
實(shí)例:網(wǎng)絡(luò)互動(dòng)游戲。
以上是四種請(qǐng)求方式的介紹和優(yōu)缺點(diǎn)比較。
轉(zhuǎn)載于:https://www.cnblogs.com/zuge/p/5434002.html
總結(jié)
- 上一篇: Git远程和分支管理
- 下一篇: struts2相对路径解释