在现代 web 应用程序的开发过程中,WebSocket 已经成为了一个必不可少的工具。WebSocket 可以指定一个长时间的持久连接,以便客户端和服务器之间可以进行实时通信,从而避免了传统的轮询方式。Deno 是一个现代化的 JavaScript 和 TypeScript 运行时,可以用于构建类似的实时 web 应用。
在本文中,我们将详细介绍如何在 Deno 中使用 WebSocket,包括如何创建 WebSocket 服务器和客户端,如何发送和接收消息,以及如何处理错误。
创建 WebSocket 服务器
首先,我们需要安装一个名为 "ws" 的 Deno 标准模块,它提供了用于创建 WebSocket 服务器和客户端的 API。可以使用以下命令进行安装:
deno install --allow-net --name=ws https://deno.land/std/ws/mod.ts
然后,我们可以使用以下代码创建一个简单的 WebSocket 服务器:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ---------------- --------- - ---- ---------------------------------- ----- -------- --------------------- ---------- - --- ----- ------ --- -- ----- - --------------------- ---------- ----- ----- --------------- - - ----- -------- ------ - ----- ------ - ------- ----- ---- --- ---------------------- -- ------------------------- --- ----- ------ --- -- ------- - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- -------- ------------------------- - - -------
在上面的代码中,我们首先创建了一个 HTTP 服务器并开始监听端口 8080。然后,我们在请求处理程序中使用 "acceptWebSocket" 函数来接受 WebSocket 握手请求。一旦握手成功,就会调用 "handleWebSocket" 函数,该函数将为每个连接处理所有传入消息并在收到消息后将其发送回客户端。
创建 WebSocket 客户端
接下来,我们需要创建一个 WebSocket 客户端来连接到我们刚才创建的服务器。以下是一个简单的示例:
-- -------------------- ---- ------- ------ - ---------------- - ---- ---------------------------------- ----- -------- ------ - ----- -- - ----- ---------------------------------------- ---------------------- -- --------- --------- --------------- ---------- --- ----- ------ --- -- --- - --------------------- ---------- ----- - - -------
在上面的代码中,我们使用 "connectWebSocket" 函数来连接到服务器。一旦连接成功,我们就可以使用 "send" 方法发送消息,并使用 "for-await-of" 循环接收来自服务器的消息。
发送和接收消息
在任何时候,都可以使用 WebSocket 对象的 "send" 方法来发送消息。例如:
ws.send("Hello, server!");
我们可以通过监听 WebSocket 对象上的 "messages" 事件来接收来自服务器的消息。例如:
ws.addEventListener("message", (event) => { console.log("Received message:", event.data); });
在 WebSocket 对象上还有其他一些有用的事件和方法,例如 "close" 事件和 "close" 方法,可以用于关闭连接。
处理错误
在 WebSocket 连接期间,可能会发生各种错误。为了处理这些错误,我们可以监听 WebSocket 对象上的 "error" 事件。例如:
ws.addEventListener("error", (event) => { console.error("WebSocket error:", event); });
如果出现连接问题,可以使用 "isWebSocketCloseEvent" 函数来检查是否为 WebSocket 关闭事件,然后根据需要采取措施。例如:
if (isWebSocketCloseEvent(event)) { console.error("WebSocket closed:", event); // Reconnect, retry, or error out } else { console.error("WebSocket error:", event); }
总结
在本文中,我们已经详细介绍了如何在 Deno 中使用 WebSocket,包括如何创建 WebSocket 服务器和客户端,如何发送和接收消息,以及如何处理错误。当然,这里只是一个简单的示例。WebSocket 还有更多的特性和用法,可以根据需要进行进一步学习和探索。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6465ea02968c7c53b069365d