netty-socketIO

        在web項目中,服務器向web頁面推送消息是一種常見的業務需求,PC端的推送技術可使用socket創建一個長連接實現。web

        傳統的web服務器都是客戶端發送請求,服務器端給出響應。如今更直接的要求是特定的時間內沒有客戶端發送請求的狀況下服務器主動推送消息到客戶端。瀏覽器

        常見的主要手段之後一下幾種:服務器

          【輪詢】 :Ajax 隔一段時間向服務器發送請求,詢問數據是否發生改變,從而進行增量式的更新。輪詢的時間間隔成了一個問題:時間過短,會有大量的請求發送到服務器,會對服務器負載形成影響;間隔太長業務數據的實時性得不到保障。使用輪詢的優勢實現邏輯簡單,缺點是無效請求的數量多,在用戶量較大的狀況下,服務器負載較高。所以輪詢的方式一般在併發數量較少,而且對消息實時性要求不高的狀況下使用。網絡

    【長輪詢技術】:  客戶端性服務器發送Ajax請求,服務器接到請求後「握「住鏈接,直到有新消息或超時(設置)才返回響應信息並關閉鏈接,客戶端處理完響應信息後再向服務器發送新的請求。長輪詢技術有點實時性高,無消息的狀況下不會進行頻繁的請求;缺點是服務端維護和客戶端的鏈接會消耗掉一部分資源。併發

    【插件提供socket方式】: 好比利用Flash XMLSocket,Java Applet套接字,Active包裝的socket。優勢是對原生的socket支持,和PC端,移動端方式類似;缺點是瀏覽器須要安裝對應的插件。框架

    【WebSocket】: 是HTML5開始提供給的一種瀏覽器與服務器間進行全雙工通信的網絡技術。優勢是更好的節省服務資源和帶寬並達到實時通信;缺點是目前還未普及,瀏覽器支持很差socket

      考慮到瀏覽器兼容性和性能問題,採用長輪詢是一種比較好的方式。netty-socketio 是一個開源的Socket.io 服務器端的一個Java的實現,他基於Netty框架。性能

相關文章
相關標籤/搜索