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