Недопустимое пространство имен клиента socket.io
Я использую последнюю версию 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("device").on("connection", async (socket) => { socket.on("error", (err) => { console.log(err.message); }); socket.on('отключение', function () { console.log('отключение сокета'); }) })
;
// client
const socket = io('ws://127.0.0.1:3001/device', {
transports: ["websocket"]
});
запуск кода дает мне сообщение об ошибке «connect_error из-за недопустимого пространства имен» '
не могу понять что не так
1 ответ
С использованиемws://127.0.0.1:3001/device
означает, что вы пытаетесь получить доступ к пространству имен с именем '/advice', которого нет на сервере.
Я думаю, вы ищетеpath
вместо этого вариант:
const socket = io("ws://127.0.0.1:3001", {
path: "/device",
transports: ["websocket"]
});
Использованная литература: