不知道大家有沒有遇到,在開發的時候,如果狀態更新但我們不可能要求使用者重整來看到更新資料(使用者要通靈嗎,哪知道你什麼時候更新XD),這時候前端該怎麼辦呢?
最直覺的的方法就是前端下個setInterval
每隔10秒重覆呼叫,這種方式,學術一點的說法叫做Polling(輪詢)。
Polling概念就是固定一段時間,就要一次資料。就像很積極(?)的PM請RD修BUG,每隔5分鐘就問你修好了沒?
優點:好實作(前端下幾行code就解決了)
缺點:
基於這種令人有點浪費資源又比較不智慧(?)的Polling方式,在這裡也提供一種server端主動通知的選擇,就是我們今天要談的webSocket拉~
WebSocket和http一樣,是一種網路傳輸協定。但他能解決http的缺點,http只能有client端發起request。websocket不同於http,Client端與Server端只需要完成一次交握,就可以一直建立連線,讓資料更有效率地交換。也因此,當後端發現資料狀態更新,就能主動通知前端,前端收到這個訊號後,就可以做對應的處理,如重新打一次API在取得一次資料,更新目前前端畫面的資料。
比較一下http和websocket:
一般websocket的請求網址如下
ws://www.testWebsocket.com
wss://www.testWebsocketcom //SSL加密後:ws -> wss
明天我們繼續介紹websocket在前端的實作與後端的配合吧~~