如何在 Deno 中使用 WebSockets 进行实时通讯?

阅读时长 6 分钟读完

WebSockets 是一种实现客户端和服务器之间实时通讯的协议,能够实现服务器端对客户端实时推送数据,适合于需要大量实时数据传输的应用场景,如聊天室、在线游戏等。在 Deno 中使用 WebSockets 实现实时通讯非常简单,下面将详细介绍如何实现。

第一步:创建 WebSocket 服务器

在 Deno 中创建 WebSocket 服务器非常简单,只需要使用内置的 WebSocket API 即可。以下是一个简单的示例代码:

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

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

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

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

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

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

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

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

以上代码创建了一个 WebSocket 服务器,用于监听 3000 端口。当客户端连接 WebSocket 服务器时,将打印 "WebSocket connected",当客户端发送消息时,将打印 "WebSocket message:" 和消息内容,并回复 "Received message: " + 消息内容。

第二步:创建 WebSocket 客户端

在 Deno 中创建 WebSocket 客户端同样非常简单,只需要使用内置的 WebSocket API 即可。以下是一个简单的示例代码:

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

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

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

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

以上代码创建了一个 WebSocket 客户端,连接到 3000 端口的 WebSocket 服务器。当客户端连接成功时,将打印 "WebSocket connected",当客户端收到消息时,将打印 "WebSocket message:" 和消息内容。客户端也可以通过 socket.send() 发送消息到服务器端。

第三步:实现实时通讯

通过以上步骤,我们已经成功创建了一个 WebSocket 服务器和一个 WebSocket 客户端。接下来我们来实现实时通讯,即服务器端可以实时向客户端推送消息。

以下是一个简单的示例代码:

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

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

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

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

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

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

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

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

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

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

以上代码在第一步代码的基础上添加了以下逻辑:

  • 创建一个数组 sockets,用于存储所有连接到 WebSocket 服务器的客户端。
  • 使用 setInterval() 每隔 1 秒向所有客户端发送当前时间。
  • 在客户端连接成功时将客户端加入 sockets 数组。

在客户端连接成功时,所有客户端将定期收到服务器推送的消息,实现了实时通讯。

总结

以上是如何在 Deno 中使用 WebSockets 进行实时通讯的详细介绍。希望这篇文章能对正在学习 Deno 的开发者有所帮助。完整示例代码可以在 GitHub 中找到。

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

纠错
反馈