前言
在前端开发过程中,我们经常需要使用 WebSocket 进行实时通信,而 engine.io
是一个很好的 WebSocket 封装库。但是,对于一些浏览器可能不支持 WebSocket 的情况,engine.io
会自动降级为使用轮询的方式进行通信,这种方式的效率并不高。因此,npm 包 engine.io-as-websocket
基于 engine.io
进行了再封装,使其能够直接调用浏览器原生的 WebSocket API 进行通信。
安装
使用 npm 可以很方便地进行安装:
npm install engine.io-as-websocket --save
使用方法
使用 engine.io-as-websocket
的方式与使用 engine.io
基本一致,只是需要添加一个 transport
属性并设为 websocket
:
-- -------------------- ---- ------- -- --- ----- ------ - --------------------- ----- ----------------- - ---------------------------------- -- ----- ----- ------ - -------------------- -- --- --------- -- ------------------------- ----------- -------------- -- ------ ----------------------- ---------------- - -------------- ------ ------------ ---
这里创建了一个 engine.io
服务器,并将其升级为使用原生 WebSocket 进行通信。在连接事件回调函数中可以处理连接成功后的操作。
注意:实际使用时需要加上 error 处理,以及对非 WebSocket 的通信进行支持。
示例代码
这里给出一个完整的示例代码供参考:
-- -------------------- ---- ------- -- --- ----- ------ - --------------------- ----- ----------------- - ---------------------------------- -- ----- ----- ------ - -------------------- -- --- --------- -- ------------------------- ----------- -------------- -- ------ ----------------------- ---------------- - -------------- ------ ------------ -------------------- -------------- - ------------------------ ------ -- ---- ------------------ --- ------------------ ---------- - -------------- ------ --------------- --- --- -- ---- ------------------ ------------- - ------------------- -------- ------------- ---
总结
通过使用 engine.io-as-websocket
包,我们可以在浏览器支持 WebSocket 的情况下直接使用该协议进行通信,避免了使用轮询方式时效率低下的问题。同时,这个库也并不影响原本的 engine.io
使用方式,更易于开发者进行选择。如果在前端开发过程中需要使用 WebSocket 进行通信,这个库将会是一个好的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066e26a563576b7b1ecfbf