引入 WebSocket 模块
在 Deno 中,我们可以使用 deno/ws 模块来创建 WebSocket 服务器。首先需要通过 import 语句引入这个模块。
import { createServer } from "https://deno.land/x/websocket/mod.ts";这里我们从 deno/ws 模块导入了 createServer 函数。这个函数用于创建一个 WebSocket 服务器实例。
创建 WebSocket 服务器实例
接下来,我们需要调用 createServer 函数,并传入一个回调函数作为参数。这个回调函数将处理客户端连接、接收消息和发送消息等操作。
// www.javascriptcn.com code example
const server = createServer((ws) => {
// 连接成功时触发
ws.on("connection", () => {
console.log("客户端已连接");
});
// 收到消息时触发
ws.on("message", (data) => {
console.log("收到客户端的消息:", data);
// 向所有连接的客户端广播消息
server.clients.forEach((clientWs) => {
if (clientWs.readyState === WebSocket.OPEN) {
clientWs.send(data);
}
});
});
// 客户端断开连接时触发
ws.on("close", () => {
console.log("客户端已断开连接");
});
});监听端口并启动服务器
创建完 WebSocket 服务器实例后,我们需要让它监听特定端口,并启动服务器。
server.listen({ port: 8080 });
console.log("WebSocket 服务器正在监听 8080 端口...");上面的代码让 WebSocket 服务器监听 8080 端口,并输出一条日志信息表示服务器已经启动。
完整示例代码
// www.javascriptcn.com code example
import { createServer } from "https://deno.land/x/websocket/mod.ts";
const server = createServer((ws) => {
ws.on("connection", () => {
console.log("客户端已连接");
});
ws.on("message", (data) => {
console.log("收到客户端的消息:", data);
server.clients.forEach((clientWs) => {
if (clientWs.readyState === WebSocket.OPEN) {
clientWs.send(data);
}
});
});
ws.on("close", () => {
console.log("客户端已断开连接");
});
});
server.listen({ port: 8080 });
console.log("WebSocket 服务器正在监听 8080 端口...");这段代码实现了基本的 WebSocket 服务器功能,包括接收客户端消息并向其他客户端广播消息。
总结
通过上述步骤,我们完成了使用 Deno 创建 WebSocket 服务器的过程。通过这个例子,你可以进一步扩展和改进你的 WebSocket 服务器,以满足不同的需求。例如,你可以添加身份验证机制、增加消息类型处理逻辑、实现更复杂的数据交换方式等等。