用WebSocket做WebApp應用內推送體驗如何?流量消耗是否可接受?

目前在用H5做手機APP,需要考慮頁面數據的實時更新,目前是定期http輪詢,但實時性不高,考慮用websocket,不知道是否可行。。。


流量消耗取決於你發多少東西,當然,比 HTTP 必定是小許多的,而且你可以自己設計演算法進一步壓縮數據。

websocket 是基於 TCP 的一個封裝,相比 TCP,內置了 數據幀 、Ping/Pong 機制 ,你自己就不用費心處理這些了。

我以前搜集了一些關於 WebSocket 的資料,你可以看看: Socket 與 WebSocket

所以說,WebSocket 和 HTTP 一樣,是一個完整的 應用層協議,包含一套標準的 API 。

從使用上來說,WebSocket 更易用,而 Socket 更靈活。


Hi,當然是可行的,我負責公司的一個比賽比分實時直播系統就是構建在websocket的基礎上的,你可以訪問【足球比分直播】即時比分來看看,用手機訪問效果更好。

其背後的推送系統整體架構我已經在github上開源GitHub - nikoloss/rose-dewdrop: websocket消息發布集群 RoseDewdrop is a solution of websocket cluster

websocket在app上面已經有替代http restful api的趨勢了,整個app只需要一個websocket連接,就可以接管所有的請求。除了可以用來擔任實時數據的推送,還有一個顯著的優勢就是請求可以並發,你不需要等待請求回應就可以接著發送另一個請求,這是ajax技術所無法比擬的。事實上一個成熟的app,進入首頁必然有多個請求,利用ws,可以一次性把請求全部送到服務端,服務端處理了哪個就返回哪個,完全的非同步。(順序就不能保證,比如你請求可能是1,2,3,4 服務端過一會可能返回的是3,2,1,4)

客戶端的體驗流暢度會提升一個級別。

個人覺得移動端的未來是屬於websocket的。

希望可以給你帶來靈感,如果有問題或者需要我幫助的隨時話可以跟我交流:)


當然可行。

不過要支持websocket,伺服器端也有改動。

如果你是做Hybird應用,可以在端裡面(java,oc)裡面用socket,再把數據傳給web,這樣服務端也不用改了。

流量消耗:

socket &< websocket &< http


WebSocket協議下客戶端與伺服器傳輸的頭部大概只有兩個位元組。


瀉藥

偶沒用過

不過根據其設計來看

起碼比 HTTP 要及時的多

且傳輸數據量會比 HTTP 小

偶想是是可以試試水

這要目前你們要支持什麼樣的移動端瀏覽器

整下對其支持程度的測試(Can I use... Support tables for HTML5, CSS3, etc)

如果你們能覆蓋你們要求的瀏覽器

那就壓測下看看。

數據比現在好的話就可以用。


提供一個思路:

websocket 維持心跳和推送更新內容url,客戶端收到更新以後根據URL從CDN上拉更新的實際內容。


推薦閱讀:

mqtt各種broker如何選擇?
知乎的 comet 實現機制是怎樣的?
怎麼使用gcm推送?
Android推送SDK哪家好?
有用過 雲巴 實時消息系統的嗎?用起來怎麼樣?謝絕廣告

TAG:網頁應用 | 流量 | 推送Push | 移動開發 | WebSocket |