WebSockets 是一种在 Web 应用程序中创建持久连接的协议,它允许客户端和服务器之间进行双向通信。Deno 是一个现代的 JavaScript 和 TypeScript 运行时环境,它提供了一种简单的方式来构建 WebSockets 服务器。在本文中,我们将学习如何使用 Deno 构建 WebSockets 服务器,并创建一个简单的示例来演示其用法。
安装 Deno
要使用 Deno 构建 WebSockets 服务器,首先需要在本地安装 Deno 运行时环境。可以通过访问 Deno 官方网站 https://deno.land/ 来下载和安装 Deno。安装完成后,可以在命令行中输入以下命令来检查 Deno 是否已成功安装:
deno --version
如果成功安装,则应该能够看到 Deno 的版本号。
创建 WebSockets 服务器
要创建 WebSockets 服务器,我们需要使用 Deno 提供的 WebSocket API。WebSocket API 提供了一个 WebSocket 类,可以用来创建 WebSocket 服务器和客户端。在服务器端,WebSocket 类的使用方法如下:
import { serve } from "https://deno.land/std/http/server.ts"; import { acceptWebSocket, WebSocket } from "https://deno.land/std/ws/mod.ts"; const server = serve({ port: 3000 }); console.log("WebSocket server is running on port 3000"); for await (const req of server) { const { conn, r: bufReader, w: bufWriter, headers } = req; acceptWebSocket({ conn, bufReader, bufWriter, headers, }).then(handleWebSocket); } async function handleWebSocket(ws: WebSocket) { console.log("WebSocket connected"); for await (const event of ws) { if (typeof event === "string") { console.log("Received message: ", event); await ws.send(`You said: ${event}`); } } }
在上面的代码中,我们首先导入了 serve
和 acceptWebSocket
函数。serve
函数用于创建 HTTP 服务器,acceptWebSocket
函数用于接受 WebSocket 连接。然后,我们创建了一个 HTTP 服务器,并在端口 3000
上监听来自客户端的连接。当客户端连接到服务器时,我们使用 acceptWebSocket
函数来接受连接,并将连接传递给 handleWebSocket
函数进行处理。在 handleWebSocket
函数中,我们使用 for await
循环来监听来自客户端的消息,然后将消息发送回客户端。
运行 WebSockets 服务器
要运行 WebSockets 服务器,我们可以在命令行中使用以下命令:
deno run --allow-net index.ts
在上面的命令中,index.ts
是包含上述代码的文件名。--allow-net
参数用于授予程序访问网络的权限。运行成功后,我们应该能够在控制台中看到类似于以下内容的输出:
WebSocket server is running on port 3000
这表示 WebSockets 服务器已成功启动,并正在监听来自客户端的连接。
创建 WebSockets 客户端
要测试 WebSockets 服务器,我们需要创建一个 WebSockets 客户端。在浏览器中,我们可以使用 WebSocket API 来创建 WebSockets 客户端。在 JavaScript 中,创建 WebSockets 客户端的代码如下:
const socket = new WebSocket("ws://localhost:3000"); socket.onopen = function () { console.log("WebSocket connected"); socket.send("Hello, server!"); }; socket.onmessage = function (event) { console.log("Received message: ", event.data); };
在上面的代码中,我们首先创建了一个 WebSocket 对象,并将其连接到服务器的地址 ws://localhost:3000
。然后,我们使用 onopen
事件处理程序来处理连接成功的事件,并向服务器发送一条消息。当服务器接收到消息后,它将发送一条回复消息,我们使用 onmessage
事件处理程序来处理该消息。
测试 WebSockets 服务器
要测试 WebSockets 服务器,我们可以在命令行中运行服务器代码,并在浏览器中打开一个 HTML 文件来运行客户端代码。在客户端代码中,我们可以在控制台中看到类似于以下内容的输出:
WebSocket connected Received message: You said: Hello, server!
这表示客户端已成功连接到服务器,并向服务器发送了一条消息。服务器已成功接收到该消息,并将其回复给客户端。
总结
在本文中,我们学习了如何使用 Deno 构建 WebSockets 服务器,并创建了一个简单的示例来演示其用法。我们使用 Deno 提供的 WebSocket API 来创建 WebSockets 服务器,并使用浏览器中的 WebSocket API 来创建 WebSockets 客户端。通过本文,读者可以了解如何使用 Deno 来构建 WebSockets 服务器,并在 Web 应用程序中实现双向通信。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6587f412eb4cecbf2dd23b73