本文分享在没有 Socket.io 的情况下使用 TypeScript 构建 WebSocket 服务器。
项目设置
首先设置项目。导航到项目目录,使用 npm 初始化一个新的 Node.js 项目:
npm init -y
安装必要的依赖项:
npm install ws express @types/express @types/ws
初始化 TypeScript 配置:
npx tsc --init
打开生成的 tsconfig.json
文件,将 rootDir
调整为 "src"
,outDir
调整为 "dist"
:
{
"compilerOptions" : {
"rootDir" : "src" ,
"outDir" : "dist" ,
"target" : "es6" ,
"module" : "commonjs" ,
"strict" : true ,
"esModuleInterop" : true
}
}
设置 WebSocket 服务器
现在项目已经建立,让我们来创建 WebSocket 服务器。在 src 目录中新建一个名为 index.ts
的文件,并粘贴以下代码:
import http from "http";
import { WebSocket, WebSocketServer } from "ws";
import crypto from "crypto";
const server = http.createServer((req, res) => {
res.end("WebSocket server is active");
}).listen(3333, () => console.log("Server running on http://localhost:3333"));
type UserMessage = {
userId: string;
username?: string;
message: string;
createdAt: Date;
};
const userMessages: UserMessage[] = [];
const wss = new WebSocketServer({ server });
wss.on("connection", (ws) => {
ws.on("error", (err) => console.error(err));
console.log("Total connected users: ", wss.clients.size);
ws.on("message", (data) => {
const userData: UserMessage = {
userId: crypto.randomBytes(16).toString("hex"),
message: data.toString("utf-8"),
createdAt: new Date(),
};
userMessages.push(userData);
wss.clients.forEach((client: WebSocket) => {
if (client.readyState === WebSocket.OPEN) {
client.send(JSON.stringify(userMessages));
}
});
});
ws.send(JSON.stringify(userMessages));
});
编译和运行服务器
把 TypeScript 代码编译成 JavaScript。运行以下命令
npx tsc-b
执行以下命令启动服务器:
node dist/index.js
好了!已使用 TypeScript 和 ws 库成功创建了一个原始 WebSocket 服务器。有了这个基础,现在就可以在网络应用程序中构建实时功能,而无需依赖 Socket.io。您可以尝试使用不同的功能,并根据需要扩展您的 WebSocket 服务器。
本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/48262.html