[點(diǎn)晴永久免費(fèi)OA]Web提醒服務(wù)的四種實(shí)現(xiàn)方式比較
很多的大型Web系統(tǒng)中都有一個(gè)可以提醒用戶的功能。 提醒的消息自然是越新鮮越實(shí)時(shí)越好。 對此,不同的系統(tǒng)采用不同的策略。 刷新。當(dāng)刷新頁面的時(shí)候查詢新的消息。 當(dāng)用戶長期停留在一個(gè)頁面的情況(以SPA為極端情況)下,這種刷新的操作就會(huì)使得消息的新鮮度受損。但總體來說,方便實(shí)現(xiàn),且開銷不大。用戶在一個(gè)頁面上停留的時(shí)間越短,這種策略就越好。 短輪詢。定期發(fā)送一個(gè)Ajax請求到服務(wù)器檢查新的消息。 設(shè)置一個(gè)周期(如1秒)向服務(wù)器發(fā)送一個(gè)異步請求檢查是否存在新的消息。周期越短,開銷越大;周期越長,新鮮度越低。要視具體情況權(quán)衡周期,通常周期的設(shè)置可以有 1秒、10秒、1分鐘等,周期不會(huì)過長。 長輪詢。與服務(wù)器建立長連接,用chunk流不斷發(fā)送信息。 在一開始傳數(shù)據(jù)(通常是指HTML)的時(shí)候,服務(wù)器設(shè)置類型為chunk,不告訴客戶端這個(gè)數(shù)據(jù)具體有多少,因此客戶端與服務(wù)器會(huì)保持持久的連接,會(huì)接受服務(wù)器持續(xù)發(fā)送的數(shù)據(jù)。這種情況可以想象看網(wǎng)絡(luò)視頻的時(shí)候,一個(gè)緩沖流的狀態(tài)。優(yōu)點(diǎn)是沒有多余浪費(fèi)的網(wǎng)絡(luò)I/O資源(相比于短輪詢),擁有真正的實(shí)時(shí)性。缺點(diǎn)是這個(gè)流不容易操控,操作起來不自然;客戶端只能被動(dòng)接受服務(wù)器的數(shù)據(jù),如果要與服務(wù)器對話又要借助Ajax。 套接字。與服務(wù)器建立套接字,實(shí)時(shí)全雙工的TCP協(xié)議的應(yīng)用。 自H5技術(shù)中WebSocket的出現(xiàn),徹底取代輪詢的方案就已經(jīng)出現(xiàn)。首先套接字也是建立一個(gè)長連接,但它的通訊協(xié)議就是ws,與http不是同一個(gè)協(xié)議,但它們都基于TCP。WebSocket可以用JavaScript直接操作,實(shí)時(shí)可讀可寫,相當(dāng)于與服務(wù)器建立了一個(gè)新的實(shí)時(shí)對話通道。節(jié)約了短輪詢的I/O浪費(fèi),又使得長輪詢的編程復(fù)雜度下降。總體完爆輪詢,是現(xiàn)代提醒服務(wù),以及其他實(shí)時(shí)應(yīng)用的不二之選。
該文章在 2019/9/12 0:03:31 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |