Пространство имен Socket IO не работает с Express - PullRequest
0 голосов
/ 09 ноября 2019

Я попытался настроить пространство имен на бэкэнде,

const server = require("http").createServer(app);
const connectedUsers = {};

const io = require("socket.io")(server, {
  path: "/socket",
  serveClient: false,
  // below are engine.IO options
  pingInterval: 10000,
  pingTimeout: 5000,
  cookie: false
});

const singularConnection = io.of("/singular-socket");

singularConnection.on("connection", socket => {
    console.log("unique user connected with socket ID " + socket);
}

И на моем клиенте я пытаюсь соединиться с

    const socket = io(GATEWAY, {
      path: "/socket/singular-socket",
      transports: ["websocket"],
      jsonp: false
    });

    socket.connect();

    socket.on("connect", () => {
      console.log("connected to socket server");
    });

Я пробовал различные вариантыURL, избавление от /socket и перемещение других вещей, но я не могу заставить его работать. Что я тут не так делаю?

1 Ответ

1 голос
/ 09 ноября 2019

У меня нет опыта использования socket.io, но из документов ...

Для подключения к пространству имен код клиента будет выглядеть так.

const socket = io('http://localhost/admin', {
  path: '/mypath'
});

Здесь сокет подключается к пространству имен admin с пользовательским путем mypath .

URL-адреса запроса будутвыглядит так: localhost / mypath /? EIO = 3 & transport = polling & sid = (пространство имен отправляется как часть полезной нагрузки).

После приведенных выше строк ваш код должен выглядеть следующим образом: *

 const socket = io("http://localhost/singular-socket", {
      path: "/socket",
      transports: ["websocket"],
      jsonp: false
    })

Где /singular-socket - пространство имен, а /socket - путь.

Попробуйте это repl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...