Deno 中如何使用 WebSocket 进行实时聊天?

阅读时长 7 分钟读完

WebSocket 是一种基于 TCP 协议的全双工通信协议,它能够在客户端和服务器之间建立持久化连接,实现实时通信。在前端开发中,我们通常使用 WebSocket 来实现实时聊天、在线游戏等功能。而在 Deno 中,我们同样可以使用 WebSocket 来实现这些功能。

安装 Deno

在开始之前,我们需要先安装 Deno。Deno 是一个安全的 JavaScript 和 TypeScript 运行时环境,它支持模块化、异步、非阻塞 IO 等特性。你可以在 Deno 官网 下载并安装最新版本的 Deno。

安装完成后,我们可以在命令行中输入 deno 命令来验证是否安装成功。

创建 WebSocket 服务器

在 Deno 中,我们可以使用标准库中的 ws 模块来创建 WebSocket 服务器。下面是一个简单的示例,它创建了一个 WebSocket 服务器,监听在 localhost:8080 上,并在有新连接时向客户端发送一条欢迎消息。

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

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

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

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

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

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

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

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

在这个示例中,我们首先使用 serve() 函数创建了一个 HTTP 服务器,然后在 for await 循环中监听客户端的请求。当客户端请求的 URL 是 /ws 时,我们使用 acceptWebSocket() 函数来接受 WebSocket 连接,并将连接交给 handleWebSocket() 函数处理。在 handleWebSocket() 函数中,我们向客户端发送一条欢迎消息,并在有新消息时将消息原样返回给客户端。

创建 WebSocket 客户端

在前端开发中,我们通常使用浏览器内置的 WebSocket API 来创建 WebSocket 客户端。但在 Deno 中,我们需要使用第三方库来实现这个功能。这里我们使用 websocket 库来创建 WebSocket 客户端。

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

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

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

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

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

在这个示例中,我们使用 connectWebSocket() 函数来连接到 WebSocket 服务器,并在连接成功后向服务器发送一条消息。在 for await 循环中监听服务器发送的消息,并将消息打印到控制台上。

实现实时聊天

有了 WebSocket 服务器和客户端,我们就可以实现实时聊天了。下面是一个简单的示例,它创建了两个 WebSocket 客户端,分别代表两个用户。当一个用户向服务器发送一条消息时,服务器会将消息转发给另一个用户。

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

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

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

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

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

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

在这个示例中,我们使用一个数组来保存所有连接到服务器的 WebSocket 客户端。当一个客户端连接到服务器时,我们将它添加到数组中,并将它交给 handleWebSocket() 函数处理。在 handleWebSocket() 函数中,我们监听客户端发送的消息,并将消息转发给其他客户端。在客户端断开连接时,我们从数组中移除该客户端。

总结

WebSocket 是一种非常强大的实时通信协议,它可以帮助我们实现实时聊天、在线游戏等功能。在 Deno 中,我们可以使用标准库中的 ws 模块来创建 WebSocket 服务器,使用第三方库来创建 WebSocket 客户端。通过学习本文中的示例,你可以了解到如何在 Deno 中使用 WebSocket 实现实时聊天功能。

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

纠错
反馈