WebSocket 是一种基于 TCP 的协议,可提供双向通信,并在浏览器和服务器之间创建持久连接。而 Deno 是一种新的后端运行时环境,它具有安全性和稳定性等特点。Deno 中有内置的 WebSocket 库,可以直接使用,本文将详细讲解其使用方法。
WebSocket 库的引入
WebSocket 库在 Deno 中是内置的,可以直接使用,只需要使用如下代码引入:
import { WebSocket } from "https://deno.land/std/ws/mod.ts";
引入后就可以使用 WebSocket 库的所有方法了。
创建 WebSocket 服务器
使用 WebSocket 库创建 WebSocket 服务器相对容易,只需要使用 WebSocket 服务器的 listen
方法,如下所示:
-- -------------------- ---- ------- ----- ------ - --- --------------------------------- ------------------------------- ------- -- - ---------------------- --------- --- ---------------------------------- ------- -- - ----------------------- ------------ ------------------------ --- -------------------------------- ------- -- - ---------------------- --------- ---
以上代码使用给定的 URL ws://localhost:8080
创建 WebSocket 服务器,然后为 open
、message
和 close
事件添加相应的事件监听器,event.data 用于读取从客户端发送来的消息,并将消息发送给客户端。在上面的代码中,当 WebSocket 连接建立时,将会输出 “WebSocket 连接已经建立” 的信息,当接收到客户端发送的消息时,将会输出 “服务器接收到消息” 的信息并将消息发送给客户端,当服务器连接关闭时,将会输出 “WebSocket 连接已经关闭” 的信息。
创建 WebSocket 客户端
使用 WebSocket 库创建 WebSocket 客户端也相对容易,只需要使用 WebSocket 客户端的 connect
方法,如下所示:
-- -------------------- ---- ------- ----- ------ - ----- --- --------------------------------- ------------- - ------- -- - ---------------------- --------- -- ---------------- - ------- -- - -------------------------- ------------ -- -------------- - ------- -- - ---------------------- --------- --
以上代码使用给定的 URL ws://localhost:8080
创建 WebSocket 客户端,然后为 onopen
、onmessage
和 onclose
事件添加相应的事件监听器,event.data 用于读取从服务器发送来的消息。在上面的代码中,当 WebSocket 连接建立时,将会输出 “WebSocket 连接已经建立” 的信息,当接收到服务器发送的消息时,将会输出 “接收到来自服务器的消息”的信息,当 WebSocket 连接关闭时,将会输出 “WebSocket 连接已经关闭” 的信息。
WebSocket 库的优点
WebSocket 与 HTTP 相比有如下优点:
- WebSocket 具有更小的头部负载,比 HTTP 更加轻松高效。
- WebSocket 具有更快的速度,因为它是针对长时间连接而设计的。
- WebSocket 可以在单个 TCP 连接上处理双向通信,而无需使用多个连接。
结论
在 Deno 中内置的 WebSocket 库是一个十分实用的工具。它可以用来在服务器和客户端之间建立长时间连接,在实时通信应用程序中使用。此外,WebSocket 库还具有更快、更高效的连接和更小的头部负载等优点。
本文详细介绍了 WebSocket 库的引入方式,以及如何在 Deno 中创建 WebSocket 服务器和客户端。希望本文对于学习 Deno 和 WebSocket 库有指导意义。更多有关 WebSocket 库的详细信息,请参考官方文档。
参考文献
- Deno 官方文档,https://deno.land/
- WebSocket 官方规范,https://tools.ietf.org/html/rfc6455
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67722cac6d66e0f9aad5470f