Deno 中使用 WebSocket 实现点对点通信

阅读时长 7 分钟读完

WebSockets 是一种在客户端和服务器之间实现双向通信的协议。Deno 是一个新兴的 JavaScript 和 TypeScript 运行时环境,它提供了一种安全、现代、高效的方式来编写服务器端应用程序。在本文中,我们将探讨如何使用 Deno 中的 WebSocket API 实现点对点通信。

WebSocket 简介

WebSockets 是一种基于 TCP 的协议,它允许客户端和服务器之间进行双向通信。这意味着客户端和服务器可以同时发送和接收数据,而不必等待对方的响应。WebSockets 具有以下特点:

  • 双向通信:客户端和服务器可以同时发送和接收数据。
  • 实时性:数据可以实时传输,而不必等待 HTTP 请求和响应。
  • 轻量级:WebSockets 的协议头比 HTTP 更小,因此在传输数据时更加高效。

Deno 中使用 WebSocket API

Deno 内置了 WebSocket API,可以轻松地创建 WebSocket 服务器和客户端。在本文中,我们将重点介绍如何使用 Deno 中的 WebSocket API 实现点对点通信。

创建 WebSocket 服务器

要创建 WebSocket 服务器,我们需要使用 Deno.listen() 方法创建一个 TCP 服务器,并将其传递给 WebSocket.upgrade() 方法。WebSocket.upgrade() 方法将返回一个 WebSocket 对象,我们可以使用它来监听客户端的连接和消息。

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

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

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

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

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

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

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

在上面的代码中,我们先创建了一个 TCP 服务器,然后使用 acceptWebSocket() 方法将 TCP 连接升级为 WebSocket 连接。接下来,我们使用 handleWebSocket() 方法来处理客户端的连接和消息。handleWebSocket() 方法使用 ws.send() 方法将接收到的消息回显给客户端。

创建 WebSocket 客户端

要创建 WebSocket 客户端,我们需要使用 WebSocket.connect() 方法连接到 WebSocket 服务器。连接成功后,我们可以使用 ws.send() 方法向服务器发送消息,并使用 for await (const msg of ws) 来监听服务器发送的消息。

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

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

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

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

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

在上面的代码中,我们使用 WebSocket.connect() 方法连接到 WebSocket 服务器,并使用 ws.send() 方法向服务器发送消息。接下来,我们使用 for await (const msg of ws) 来监听服务器发送的消息。

实现点对点通信

要实现点对点通信,我们需要在服务器端为每个连接创建一个唯一的标识符,并将其存储在一个 Map 对象中。当客户端连接到服务器时,我们将生成一个唯一的标识符,并将其存储在 Map 对象中。当客户端发送消息时,我们将使用标识符找到接收方,并将消息发送给它。

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

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

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

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

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

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

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

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

在上面的代码中,我们使用一个 Map 对象来存储连接到服务器的所有 WebSocket 客户端。当客户端连接到服务器时,我们生成一个唯一的标识符,并将其与 WebSocket 对象存储在 Map 对象中。当客户端发送消息时,我们使用标识符找到接收方,并将消息发送给它。当客户端断开连接时,我们从 Map 对象中删除它。

总结

在本文中,我们探讨了如何使用 Deno 中的 WebSocket API 实现点对点通信。我们介绍了 WebSockets 的基本概念,并提供了示例代码来创建 WebSocket 服务器和客户端。最后,我们演示了如何使用 Map 对象来实现点对点通信。WebSockets 是一种非常有用的技术,可以用于实现实时通信、游戏、聊天应用程序等。Deno 提供了一个安全、现代、高效的方式来编写 WebSocket 应用程序,我们希望本文能够帮助您了解如何使用 Deno 中的 WebSocket API。

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

纠错
反馈