如何在 Deno 上使用 WebSocket?

阅读时长 5 分钟读完

WebSocket 是一种基于 TCP 连接的协议,可以在客户端和服务器之间进行实时通信。在前端开发中,我们经常需要使用 WebSocket 去实现一些实时性较强的功能,例如聊天室、通知提醒等。而在 Deno 环境下,我们同样可以使用 WebSocket 来实现这些功能。

安装 WebSocket

在 Deno 中,我们可以通过 std/ws 模块来使用 WebSocket。安装方式如下:

该命令将会安装 std/ws 模块,并把该模块注册到 Deno 的模块缓存中。

创建 WebSocket 服务器

在 Deno 中创建 WebSocket 服务器的方法和创建 HTTP 服务器是类似的。我们可以使用 serve() 函数来创建 WebSocket 服务器。

-- -------------------- ---- -------
------ - ----- - ---- ---------------------------------------
------ - ----------- --------------- - ---- ----------------------------------

----- ------ - ------- ----- ---- ---
----------------------- ------- -------------------------

--- ----- ------ --- -- ------- -
  -- ----------- --- ----- -- ------- --- ------ -
    -- ----------------- -
      -----------------
        ----- ---------
        ---------- ------
        ---------- ------
        -------- ------------
      --
        ----------------------
        ---------- -- ----------------------- -------- ----
    -
  -
-

----- -------- ------------------- ----------- ------------- -
  ----------------------- -------------
  --- ----- ------ --- -- --- -
    ----------------------- ---------- -----
    -- ------- --- --- --------- -
      --------------- ---------
    - ---- -- ---- ---------- ----------- -
      -------------
    -
  -
-

在以上代码中,我们首先创建了一个 HTTP 服务器,并监听端口号 3000。接着,我们通过 acceptable() 函数来判断当前的请求是否是一个 WebSocket 请求。如果是 WebSocket 请求,我们就通过 acceptWebSocket() 函数来接受该请求,并创建一个 WebSocket 对象。

在创建 WebSocket 对象之后,我们就可以通过 for await 循环来监听该 WebSocket 对象的消息,并对消息进行处理。在这个示例中,我们简单地对消息进行了回显。

创建 WebSocket 客户端

在 Deno 中创建 WebSocket 客户端也非常简单。我们可以使用 WebSocket 类来创建一个 WebSocket 对象,并连接到 WebSocket 服务器。

-- -------------------- ---- -------
----- -- - --- ------------------------------------

--------- - -- -- -
  ----------------------- -------------
  -------------- ------------
--

------------ - ------- -- -
  ----------------------- ---------- ------------
--

---------- - -- -- -
  ----------------------- ----------
--

在以上代码中,我们创建了一个 WebSocket 对象,并通过 ws.onopen 事件来监听 WebSocket 的连接事件。一旦连接建立成功,我们就可以通过 ws.send() 函数来向服务器发送消息。当服务器接收到消息时,就会通过 ws.onmessage 事件来回调到客户端,并用日志输出收到的消息。

最后,我们还需要监听 ws.onclose 事件来判断 WebSocket 被关闭的情况。

总结

WebSocket 的出现虽然代替不了 HTTP,但是它在一些需要实时交互、连续性较强的场景下表现非常出色。在 Deno 环境下,我们可以使用 std/ws 模块来简单地创建 WebSocket 服务器和客户端,并做到实时通信。

需要注意的是,WebSocket 消息的收发是实时的,同时如果需要跨域传输,需要在服务端进行相关 CORS 设置。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6493b54248841e989415168f

纠错
反馈