websocket優缺點?
優點:
1、傳統的http請求,其并發能力都是依賴同時發起多個TCP連接訪問服務器實現的(因此并發數受限于瀏覽器允許的并發連接數),而websocket則允許我們在一條ws連接上同時并發多個請求,即在A請求發出后A響應還未到達,就可以繼續發出B請求。由于TCP的慢啟動特性(新連接速度上來是需要時間的),以及連接本身的握手損耗,都使得websocket協議的這一特性有很大的效率提升。
2、http協議的頭部太大,且每個請求攜帶的幾百上千字節的頭部大部分是重復的,很多時候可能響應都遠沒有請求中的header空間大。如此多無效的內容傳遞是因為無法利用上一條請求內容,websocket則因為復用長連接而沒有這一問題。
3、當需要實現客戶端刷新消息時,傳統方案往往通過定時ajax請求實現,實際上對多數用戶多數時間下這些請求都是無意義了,除了浪費資源。
其次則是websocket支持服務器推送消息,這帶來了及時消息通知的更好體驗,也是ajax請求無法達到的。
缺點:
它對開發者要求高了許多。對前端開發者,往往要具備數據驅動使用javascript的能力,且需要維持住ws連接(否則消息無法推送);對后端開發者而言,難度增大了很多,一是長連接需要后端處理業務的代碼更穩定(不要隨便把進程和框架都crash掉),二是推送消息相對復雜一些,三是成熟的http生態下有大量的組件可以復用,websocket則太新了一點。