Не удается подключиться к серверу Socket IO - PullRequest
0 голосов
/ 01 июня 2018

У меня запущены клиент и сервер бот-сокета.Я хочу, чтобы клиент связывался с сервером.

Инициализация сервера

this.http_server = net.createServer();
// this didn't work too. Exxentially socket io does not work at all
//   this.io = io.listen(typeof port == "number" ? port : process.env.PORT);
console.log("[ManagementServer] Attaching socket IO to HTTP server.");
this.io = io(this.http_server);
/// The port does open
this.http_server.listen(typeof port == "number" ? port : process.env.PORT,
    () => {
        console.log('[ManagementServer] IO HTTP server listening on port', this.http_server.address().port)
    });
/// The connection listener is triggered, but IO doesn't bother 
/// replying or something
this.http_server.on("connection", (req, res) => {
    console.log("[ManagementServer] Connection received, but IO ignores it.")
});
// Never happens
this.io.on("connection", (socket) => {
    this.connection(socket);
})

Инициализация клиента

const srvurl = "http://" + this.remoteAddr + ":" + this.remotePort;

console.log("[UDP_socketio] Connecting to server: ", srvurl)
this.client = socketioclient(srvurl);

this.client.once("connect", () => {
    console.log("[UDP_socketio] Connected to remote server, identificating.")
    this.sendIdentification();
});

this.client.on("error", () => {
    console.error("[UDP_socketio] Socket IO connection error.")
});

Выходные данные отладки сокета IO

Я включил отладку, но вывод отладки ввода-вывода сокета в любом случае не очень полезен:

[ManagementServer] Attaching socket IO to HTTP server.
  socket.io:server initializing namespace / +0ms
  socket.io-parser encoding packet {"type":0,"nsp":"/"} +0ms
  socket.io-parser encoded {"type":0,"nsp":"/"} as 0 +1ms
  socket.io:server creating engine.io instance with opts {"serveClient":false,"path":"/","initialPacket":["0"]} +3ms
[ManagementServer] IO HTTP server listening on port 80
[UDP_socketio] Connecting to server:  http://127.0.0.1:80
  socket.io-client:url parse http://127.0.0.1:80 +0ms
  socket.io-client new io instance for http://127.0.0.1:80 +0ms
  socket.io-client:manager readyState closed +0ms
  socket.io-client:manager opening http://127.0.0.1:80 +1ms
  engine.io-client:socket creating transport "polling" +0ms
  engine.io-client:polling polling +0ms
  engine.io-client:polling-xhr xhr poll +0ms
  engine.io-client:polling-xhr xhr open GET: http://127.0.0.1/?EIO=3&transport=polling&t=MEuBb8c&b64=1 +1ms
  engine.io-client:polling-xhr xhr data null +0ms
  engine.io-client:socket setting transport polling +10ms
  socket.io-client:manager connect attempt will timeout after 20000 +12ms
  socket.io-client:manager readyState opening +1ms
[ManagementServer] Connection received, but IO ignores it.
  socket.io-client:manager connect attempt timed out after 20000 +20s
  engine.io-client:socket socket close with reason: "forced close" +20s
  engine.io-client:polling transport not open - deferring close +20s
  engine.io-client:socket socket closing - telling transport to close +0ms
  socket.io-client:manager connect_error +2ms
  socket.io-client:manager cleanup +0ms
  socket.io-client:manager will wait 1178ms before reconnect attempt +1ms
  socket.io-client:manager attempting reconnect +1s
  socket.io-client:manager readyState closed +0ms
  socket.io-client:manager opening http://127.0.0.1:80 +1ms

Обратите внимание, что прослушиватель для соединения, которое я добавил, запускает, но ввод-вывод сокета ничего не делает.

Что до сих пор не помогло:

  • Удаление прослушивателя connection из this.http_server
  • Изменение порта, используемого для тестирования
  • Увеличение задержки, после которой клиент пытается подключиться
  • Чтение документации по socket.io.Это сбивает с толку, неполное, неточное и непоследовательное.

Что может заставить сокет IO игнорировать все подобные подключения?Может быть, сервер прослушивает запрос с разных путей?Если это так, как проверить, по какому пути прослушивается ввод-вывод?

1 Ответ

0 голосов
/ 03 июня 2018

socket.io работает с http / s серверами, такими как Express (уровень 7).

net является TCP сервер (уровень 4).

Таким образом, они не совместимы.

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