socket.io簡介
阿新 • • 發佈:2018-12-24
websocket是一種比較簡單的協議,各種語言中都有很多實現版本,實際上它們差別不大,都是在websocket的基礎上做些封裝,隨便選一個即可。
socket.io就是眾多websocket庫中的一種,它並不像其它庫那樣簡單地實現了一下websocket,而是在websocket外面包裹了厚厚的一層。普通的websocket(例如ws庫)只需要服務端就夠了,socket.io自定義了一種基於websocket的協議,所以socket.io的服務端和客戶端必須配套。簡言之,如果服務端使用socket.io,那麼客戶端就沒得選了,必然也用socket.io的客戶端。
socket.io的服務端是基於node實現的(只提供了這一種語言的服務端實現),同時它提供了多種語言的客戶端,包括JavaScript、Java、C++、Swift、Dart等,可以看出,socket.io是為了移動端才支援多種語言的,socket.io的目標很高遠:統一天下,做最好的websocket庫。
socket.io在websocket基礎上提供了哪些功能呢?主要包括如下幾個方面:
- 可靠穩定。即便服務端使用代理或者負載均衡,也能夠連線成功;
- 跨平臺。各種瀏覽器、各種移動端作業系統、各種形狀的終端都支援;
- 掉線重連和掉線檢測。這跟socket.io自定義的ping協議有關;
- 封裝完好。API簡潔清晰,支援room風格的websocket。
然而,在node中ws庫遠遠要比socket.io流行,這可能是因為人們都喜歡接近本質的東西而不喜歡過多封裝。ws已經足夠好用了。基於ws,socket.io的多餘功能完全可以自己用少量程式碼實現。
參考資料
socket.io
https://www.npmjs.com/package/socket.io
ws
https://www.npmjs.com/package/ws