Недопустимое пространство имен клиента 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"]
});

Использованная литература:

Другие вопросы по тегам