Deno 中 WebSocket 的使用
WebSocket 是一种在 Web 应用程序中进行双向通信的网络协议,可以与服务器进行实时通信。Deno 是一个可以运行 JavaScript 和 TypeScript 的直接运行时环境,其可以在浏览器之外的环境中运行,因此它非常适合构建服务器端应用程序。在 Deno 中使用 WebSocket,我们可以实现更加高效和实时的通信方式。
一、安装 WebSocket 模块
Deno 自带了 WebSocket 模块,我们只需要使用 import 引入模块即可:
import { WebSocket } from "https://deno.land/std/ws/mod.ts";
二、创建 WebSocket 服务器
以下是创建 WebSocket 服务器的示例代码:
// javascriptcn.com 代码示例 import { serve } from "https://deno.land/std/http/server.ts"; import { acceptWebSocket, acceptable } from "https://deno.land/std/ws/mod.ts"; const server = serve({ port: 8080 }); console.log("WebSocket server running on port 8080"); for await (const req of server) { if (req.method === "GET" && req.url === "/ws" && acceptable(req)) { const { conn, r: bufReader, w: bufWriter, headers } = req; acceptWebSocket({ conn, bufReader, bufWriter, headers }) .then(handleWebSocket) .catch(async (err) => { console.error(`Failed to accept WebSocket: ${err}`); await req.respond({ status: 400 }); }); } } async function handleWebSocket(webSocket: WebSocket): Promise<void> { console.log("WebSocket connected!"); for await (const event of webSocket) { switch (event.type) { case "text": { console.log("Received:", event.data); await webSocket.send(`Hello, ${event.data}!`); break; } } } }
该代码中,我们首先创建了一个 HTTP 服务器,它将监听端口 8080。当有客户端请求时,我们会判断它是否为 WebSocket 的请求,如果是,则使用 acceptWebSocket 函数将该请求转换为 WebSocket 对象,并调用 handleWebSocket 函数来处理 WebSocket 事件。
在 handleWebSocket 函数中,我们会在创建 WebSocket 连接成功后输出一条日志。当收到来自客户端的文本消息时,我们会打印该消息并向客户端发送一条回复消息。注意,我们使用的是 async/await 语法,这是因为 WebSocket 类型已经支持异步迭代器协议。
三、创建 WebSocket 客户端
接下来是创建 WebSocket 客户端的示例代码:
// javascriptcn.com 代码示例 import { WebSocket } from "https://deno.land/std/ws/mod.ts"; const socket = new WebSocket("ws://localhost:8080/ws"); console.log("WebSocket client started"); socket.on("open", async () => { console.log("Connected to WS server"); await socket.send("Deno"); }); socket.on("message", (event) => { console.log("Received:", event.data); }); socket.on("close", (event) => { console.log("Disconnected from WS server", event.code, event.reason); });
该代码中,我们创建了一个 WebSocket 对象,并指定了连接的 URL。在 WebSocket 连接成功后,我们会向服务器发送一条文本消息。当收到来自服务器的消息时,我们会打印该消息。当 WebSocket 连接关闭时,我们会输出连接关闭事件的代码和原因。
四、总结
本文详细介绍了如何在 Deno 中使用 WebSocket 进行双向实时通信,包括创建 WebSocket 服务器和客户端的步骤,并附加了示例代码。WebSocket 在实现实时通信方面具有很大的优势,可以应用于各种不同的场景,例如在线游戏、聊天应用等等。希望大家可以通过本文学习并应用 WebSocket 技术,提升 Web 应用程序的实时性和效率。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652fd6217d4982a6eb10a171