Server-sent Events和 websocket
阿新 • • 發佈:2019-02-18
Server-Sent Events 執行原理 瀏覽器通過HTTP向伺服器傳送請求,伺服器端拿出資料庫中的最新的資訊,立即返回給客戶端,客戶端等待三秒後再次發出下一個請求。 實現方式 同樣,瀏覽器中HTML兩個input,JavaScript模組開啟EventSource,把接受者的id傳給服務端。 客戶端收到相應後,onMessage事件的處理器將被呼叫。瀏覽器將每3秒傳送一個請求,除非將連線關閉(Close方法)。 WebSockets 執行原理 客戶端通知WebSockets伺服器一個事件,告訴他接收者id,伺服器將立即通知訊息,當任何新的未讀訊息來的時候,伺服器都將立即返回資料給客戶端。 客戶端開啟一個WebSockets連線而且在/notification/updates上訂閱一個事件處理。在HTML中新增一個傳送向/notification/presents傳送接收者id的button。這將在所有的開啟連線中引起廣播訊息。所以每一個活躍的客戶端都收到通知,客戶端會檢查訊息中的id是否是當前登入的使用者的id,如果是就更新通知數量。 總結 瀏覽器相容性 Server-Sent Events支援Chrome9+、Firefox6+、Opera11+、Safari5+ Chrome14、Firefox7支援最新的hybi-10協議,Firefox6支援hybi-07. 伺服器負載 Server-Sent Events工作的方式有很多,除非Server-Sent Events不必在每一次響應發出後都關閉連線。 WebSockets,伺服器只需要一個程序處理所有的請求,沒有迴圈,不必為每個客戶端都分配cpu和記憶體。 客戶端負載 Server-Sent Events採用瀏覽器的內建的實現方式,只花費很少的一部分資源。 WebSockets跟Server-Sent Events一樣,採用瀏覽器的內建的實現方式,只花費很少的一部分資源。 時間線 Server-Sent Events預設延時3秒,但是可以調整。 WebSockets真正的實時 實現方式複雜度 Server-Sent Events甚至比Long-polling更簡單 需要一個WebSockets伺服器處理事件,並開放一個埠