在 Deno 中使用 WebSocket 进行即时通讯的完整教程

阅读时长 7 分钟读完

引言

WebSocket 是一种支持双向通信的协议,与 HTTP 协议相比,它具有更低的延迟和更高的实时性。它可以用于建立客户端和服务器之间的实时通信,并且广泛应用于在线多人游戏、在线聊天、实时应用程序监视和数据可视化等领域。在本文中,我们将介绍如何在 Deno 中使用 WebSocket 实现即时通信功能。

什么是 Deno

Deno 是一种新型的 JavaScript 和 TypeScript 运行时,由 Node.js 的创始人 Ryan Dahl 开发。与 Node.js 不同的是,它是一种更安全的环境,它自带了标准库,支持自动派生类型的 TypeScript,并有良好的模块导入机制。

WebSocket 基础知识

WebSocket 协议是一种基于 TCP 协议的应用层协议,它提供了一个持续连接,可以在客户端和服务器之间进行双向通信。在建立 WebSocket 连接之前,客户端和服务器都必须发送一个握手请求和握手确认。握手请求和握手确认是 HTTP 协议,它们在连接建立之后被忽略。连接建立后,客户端和服务器可以在同一个套接字上交换数据,不需要再为每个请求重新建立 TCP 连接。

在 Deno 中使用 WebSocket 实现即时通信

在 Deno 中使用 WebSocket 实现即时通信,我们需要完成以下步骤:

  1. 安装 Deno 1.0.0 或更高版本。

  2. 创建一个 WebSocket 服务器。

  3. 创建一个 WebSocket 客户端。

  4. 运行服务器和客户端,并进行通信。

接下来,我们将逐一介绍每个步骤。

步骤 1:安装 Deno

安装 Deno 相对比较简单。您只需要打开终端并运行以下命令即可:

或者 (Windows 用户可以使用 PowerShell 配合 scoop 安装)

验证 Deno 是否已安装。通过运行以下命令来检查 Deno 版本:

如果您看到类似 1.0.0 的输出,则表示 Deno 已成功安装。

步骤 2:创建 WebSocket 服务器

我们将使用 Deno 的内置 WebSocket 模块来创建 WebSocket 服务器。以下是一个 WebSocket 服务器示例代码:

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

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

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

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

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

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

该代码会创建一个 WebSocket 服务器,它使用 Deno 的内置 HTTP 模块创建一个 HTTP 服务器,监听 HTTP 和 WebSocket 请求,并响应 WebSocket 连接请求。

在 Deno 中,您可以使用 URL 模块从字符串中解析出标准格式的 URL。在代码中,我们使用一个称为 acceptable 的函数来检查请求是否是一个有效的 WebSocket 请求。如果请求有效,则使用 acceptWebSocket 函数来接受请求,然后我们就可以通过 sock 对象与客户端进行通信,这个对象可以用来发送和接收消息以及管理一些事件。

步骤 3:创建 WebSocket 客户端

创建 WebSocket 客户端时,您需要在客户端代码中导入 Deno 的内置 WebSocket 模块并创建一个 WebSocket 实例。以下是一个 WebSocket 客户端示例代码:

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

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

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

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

在代码中,我们使用 new WebSocket 构造函数来创建一个 WebSocket 客户端,其中 ws://localhost:8080/ws 是 WebSocket 服务器的 URL。一旦连接建立,我们可以使用 addEventListener 函数监听 'message' 事件和 'error' 事件。当接收到 'message' 事件时,我们打印接收到的数据;当接收到 'error' 事件时,我们打印错误信息。

步骤 4:运行服务器和客户端,并进行通信

在完成上述代码后,您可以将服务器代码保存到一个文件,比如 server.ts,将客户端代码保存到一个文件,比如 client.ts。接下来,您可以在终端上运行服务器代码:

然后,您可以再打开一个终端窗口并运行客户端代码:

一旦客户端连接到服务器,您可以在客户端代码中向服务器发送消息:

WebSocket 服务器将在接收到消息后打印消息,并将其返回到客户端,客户端代码将在接收到消息后打印消息。

总结与展望

在本教程中,我们介绍了如何在 Deno 中使用 WebSocket 实现即时通信功能。WebSocket 可以提供更低的延迟和更高的实时性,因此它广泛应用于在线多人游戏、在线聊天、实时应用程序监视和数据可视化等领域。在 Deno 中,我们可以使用其内置的 WebSocket 模块来创建 WebSocket 服务器和客户端,并使用 WebSocket 协议进行实时通信。如果您对 WebSocket 的更高级应用感兴趣,可以继续深入学习 WebSocket 并尝试构建更复杂的应用。

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

纠错
反馈