Deno 中如何使用 WebSockets 进行点对点消息传递
WebSockets 是一种能够在客户端和服务器之间实现双向通信的协议,相对于传统的 HTTP 请求,WebSockets 的特点在于可以请求多次而不会发送额外的 HTTP 请求,从而实现更实时的双向通信。Deno 是一个现代的 JavaScript 和 TypeScript 运行时,它提供了许多有用的 API,包括 WebSockets。本篇文章将介绍如何在 Deno 中使用 WebSockets 进行点对点消息传递。
- Deno 中的 WebSockets API
Deno 中的 WebSockets API 采用异步风格,设置一个 WebSocket 服务器非常简单,只需要监听一个 TCP 连接,并通过 accept()
方法来接受连接。以下是一个简单的示例代码:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - ---------------- ---------- - ---- ---------------------------------- ----- ------ - ------- ----- ---- --- ------------------- ------- -- ---- ------- --- ----- ------ --- -- ------- - -- ----------- --- ----- -- ---------------- - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- ------- ------------- ------ -- - -- --------- ---------- -- ----------- ------------------- ------------- --- ----- ------ --- -- ----- - -- ------- --- --- --------- - -------------------- --------- --------- ----- --------------- -- ---- ---- --- ------- - - --- - -
在此示例代码中,我们首先创建了一个 HTTP 服务器来监听端口 3000,当请求到达服务器时,我们通过 acceptable()
方法来确定这个请求是否可以接受 WebSocket 连接。如果是,我们通过 acceptWebSocket()
方法来接受连接,在连接建立后,我们进入了一个无限循环中,可以通过 sock
对象来接收和发送消息。
- Deno 中使用 WebSockets 进行点对点消息传递
有了 WebSocket 服务器之后,我们可以在 Deno 中使用 WebSockets 进行点对点消息传递。为了实现这一目标,我们需要对我们的 WebSocket 服务器进行一些修改,以便为每个 WebSocket 连接创建一个唯一标识符(UUID),并将这个标识符保存在一个对象中,以便后续使用。以下是修改后的示例代码:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------- ------ - -- - ---- ------------------------------------ ------ - ---------------- ---------- - ---- ---------------------------------- --------- ---- - --- ------- ------- ---------- - ----- ----- - --- ----------- -------- ----- ------ - ------- ----- ---- --- ------------------- ------- -- ---- ------- --- ----- ------ --- -- ------- - -- ----------- --- ----- -- ---------------- - ----- - ----- -- ---------- -- ---------- ------- - - ---- ----------------- ----- ---------- ---------- ------- ------------- ------ -- - -- --------- ---------- -- ----------- ------------------- ------------- --- - ----- -- - -------------- ----- ----- ---- - - --- ------- ---- -- ------------- ------ ----- -------------------------- ----- ------------- -- ---- --- ----- ------ --- -- ----- - -- ------- --- --- --------- - ----- - --- ------- - - ---------------- -- --- --- --------- -- -------------- - ----- ------ - ------------- -- ----- ----- ------------------- ---------------- ----- ---------- ----- --- ------- -- -- - ---- - ------------------- ------ ----- -- - -- -------- --- --- - ----- ----------------- ---------------- ----- ---------- ----- --- ------- -- -- - --- - - - - ----- ----- - --------------------- -- ------ ---------- --------- - ------- - ----------------- - --- - -
在此示例代码中,我们为每个 WebSocket 连接创建了一个唯一标识符,并将它与该连接一起保存在一个名为 users
的 Map
中。我们还在连接建立后,将其 ID 发送回客户端,以便客户端知道其 ID。我们进入到一个无限循环中来处理来自客户端的消息。这些消息可以是点对点的,也可以是广播型的。针对点对点的消息,我们将消息发送到目标客户端,如果客户端不存在,则将消息广播给所有连接的用户。通过此方法,我们可以实现在 Deno 中使用 WebSockets 进行点对点消息传递。
结论
WebSockets 提供了一种有效的机制来实现实时的双向通信。Deno 提供了 WebSockets API 来支持在 Deno 中创建 WebSocket 服务器。通过本文中的示例代码,我们可以在 Deno 中使用 WebSockets 进行点对点消息传递,并采用广播模式以进行消息的广播。同时,我们也了解了如何在 Deno 中创建一个 WebSocket 服务器,创建唯一的客户端标识符,并使用 WebSockets API 进行点对点消息传递。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6723718e2e7021665e100db8