一、使用express-ws插件
pnpm i express-ws
二、app.js引入并使用
expressWs(app);
app.ws("/socketTest", (ws, req) => {
console.log("WebSocket client connected to /public/socketTest");
ws.send(
JSON.stringify({
type: "welcome",
message: "Connected to WebSocket test endpoint",
})
);
ws.on("message", function (message) {
console.log("Received message:", message);
ws.send(
JSON.stringify({
type: "echo",
originalMessage: message.toString(),
})
);
});
ws.on("close", function () {
console.log("WebSocket connection closed for /public/socketTest");
});
ws.on("error", function (err) {
console.error("WebSocket error:", err);
});
});
三、www中附加WebSocket服务
...
import expressWs from 'express-ws';
...
expressWs(app,server)
...
四、前端调用
let socket = new WebSocket("ws://localhost:3000");
socket.onopen = function(event) {
console.log("连接已建立");
};
socket.onmessage = function(event) {
console.log("收到消息:", event.data);
};
socket.onerror = function(error) {
console.error("发生错误:", error);
};
socket.onclose = function(event) {
if(event.wasClean) {
console.log(`连接正常关闭,代码=${event.code} 原因=${event.reason}`);
} else {
console.log("连接异常断开");
}
};
socket.send("Hello Server!");
const data = { type: 'message', content: 'Hello Server!' };
socket.send(JSON.stringify(data));
let buffer = new ArrayBuffer(16);
socket.send(buffer);