引言
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 实现即时通信,我们需要完成以下步骤:
安装 Deno 1.0.0 或更高版本。
创建一个 WebSocket 服务器。
创建一个 WebSocket 客户端。
运行服务器和客户端,并进行通信。
接下来,我们将逐一介绍每个步骤。
步骤 1:安装 Deno
安装 Deno 相对比较简单。您只需要打开终端并运行以下命令即可:
$ curl -fsSL https://deno.land/x/install/install.sh | sh
或者 (Windows 用户可以使用 PowerShell 配合 scoop 安装)
$ iwr https://deno.land/x/install/install.ps1 -useb | iex
验证 Deno 是否已安装。通过运行以下命令来检查 Deno 版本:
$ deno --version
如果您看到类似 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
。接下来,您可以在终端上运行服务器代码:
$ deno run --allow-net server.ts
然后,您可以再打开一个终端窗口并运行客户端代码:
$ deno run --allow-net client.ts
一旦客户端连接到服务器,您可以在客户端代码中向服务器发送消息:
socket.send('Hello, WebSocket!')
WebSocket 服务器将在接收到消息后打印消息,并将其返回到客户端,客户端代码将在接收到消息后打印消息。
总结与展望
在本教程中,我们介绍了如何在 Deno 中使用 WebSocket 实现即时通信功能。WebSocket 可以提供更低的延迟和更高的实时性,因此它广泛应用于在线多人游戏、在线聊天、实时应用程序监视和数据可视化等领域。在 Deno 中,我们可以使用其内置的 WebSocket 模块来创建 WebSocket 服务器和客户端,并使用 WebSocket 协议进行实时通信。如果您对 WebSocket 的更高级应用感兴趣,可以继续深入学习 WebSocket 并尝试构建更复杂的应用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64b25c2b48841e9894e9a978