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