我在最新版本的socket.io上运行,下面的服务器代码和客户端代码运行良好。
// server
const { Server } = require("socket.io"),
http = require('http');
const httpserver = http.createServer();
io.on("connection", async (socket) => {
socket.on("error", (err) => {
console.log(err.message);
});
socket.on('disconnect', function () {
console.log('socket disconnect');
})
});
const io = new Server(httpserver, {
cors: { origin: "*", methods: ["GET", "POST"],}
});
httpserver.listen(3001, () => {
console.log('listening on *:3001');
});
// client
import { io, Socket } from "socket.io-client";
const socket = io('ws://127.0.0.1:3001', {
transports: ["websocket"]
});
socket.on("connect_error", (err) => {
console.log(`connect_error due to ${err.message}`);
});
然后我尝试在socket.io//server io. of("设备").on("连接",async(socket)=中使用命名空间
// client
const socket = io('ws://127.0.0.1:3001/device', {
transports: ["websocket"]
});
运行代码会给我一个错误,说“由于无效的命名空间connect_error”
我不知道哪里出了问题
使用ws://127.0.0.1:3001/device
意味着您正在尝试访问名为“/建议”的命名空间,该命名空间在服务器上不存在。
我认为您正在寻找path
选项:
const socket = io("ws://127.0.0.1:3001", {
path: "/device",
transports: ["websocket"]
});
参考资料: