WebSockets 是一种用于实时通信的网络协议。它通过基于事件的机制,在客户端与服务端之间实现通信。在现代 Web 应用中,WebSockets 已经成为了不可缺少的一部分。Deno 是一种新型的运行时环境,它提供了一些独特的优势,其中就包括更加安全和直接的 WebSockets 支持。在本文中,我们将探讨如何在 Deno 中进行 WebSockets 的正确操作。
安装 Deno
在开始之前,您需要先安装 Deno。可以从 Deno 官网 上找到适合您的安装包,并按照安装说明进行安装。
创建 WebSocket 服务器
在 Deno 中创建一个 WebSocket 服务器非常简单。以下是一个简单的例子:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ---------------- --------------------- - ---- ---------------------------------- ----- ------ - ------- ----- ---- --- ---------------------- ------ ------- -- ---- ------- --- ----- ------ --- -- ------- - -- -------- --- ------ - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- ------- ------------------------- - - ----- -------- ------------------- ---------- - ------------------- ------------ --- ----- ------ -- -- --- - -- ------- -- --- --------- - ---------------------- ---------- ---- ----- -------------- -------- - ---- -- --------------------------- - ---------------------- --------- - - -
该示例创建了一个 WebSocket 服务器,并在客户端连接时输出“client connected”消息,同时将接收到的消息通过 WebSocket 发送回客户端。在此代码中,我们使用了 Deno 标准库中的 serve
和 ws
模块,前者用于创建 HTTP 服务器,后者用于处理 WebSocket 连接。WebSocket 连接需要一个 TCP 连接。Deno 提供了 Deno.listen()
方法用于创建 TCP 连接。
连接 WebSocket 服务器
要在客户端连接到 WebSocket 服务器,我们需要创建一个 WebSocket 对象。以下是一个简单的例子:
-- -------------------- ---- ------- ----- -- - --- ------------------------------------ --------------------------- -- -- - ---------------------- ------------ --- ------------------------------ -- -- - ---------------------- ---------- --------- --- ---------------------------- -- -- - ---------------------- --------- ---
添加了三个事件监听器,分别监听 WebSocket 连接成功、收到消息和连接关闭事件。在此示例中,我们使用了浏览器的 WebSocket API,但是在 Deno 中也有类似的 API,您可以通过 Deno.connect()
方法创建 TCP 连接,然后调用 WebSocket.fromSocket()
方法将其转换为 WebSocket。
发送和接收消息
一旦客户端与服务器建立 WebSocket 连接,就可以通过 send()
方法发送消息,通过 message
事件接收消息。以下是一个简单的例子:
ws.send('hello');
向服务器发送消息并在服务器接收消息时触发 message
事件。以下是一个示例:
-- -------------------- ---- ------- --- ----- ------ -- -- --- - -- ------- -- --- --------- - ---------------------- ---------- ---- ----- -------------- -------- - ---- -- --------------------------- - ---------------------- --------- - -
在此代码片段中,我们检查了 WebSocket 实例接收到的每个事件。第一个 if
块检查消息是否为字符串类型。如果是,则在控制台中打印消息,并将其发送回客户端。第二个 if
块检查事件是否为 WebSocket 关闭事件。如果是,将在控制台中收到“websocket closed”消息。
结论
本文探讨了如何在 Deno 中正确地使用 WebSockets 进行实时通信。我们看到了如何创建 WebSocket 服务器、连接到服务器、发送和接收消息。如果您正在开发现代化的 Web 应用程序,那么 WebSockets 将是一种非常有用的工具。在 Deno 中使用 WebSockets,您可以更加安全地实现实时通信,因为 Deno 具有内置的安全性,防止了许多常见的 Web 安全漏洞。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67171134ad1e889fe21f8254