Socket.io не удается подключиться (net :: ERR_CONNECTION_TIMED_OUT), иногда возникают проблемы с дублированием сокета при подключении - PullRequest
0 голосов
/ 07 января 2020

Это довольно специфический набор проблем, с которыми я сейчас сталкиваюсь при настройке socket.io. Иногда мой socket.io вообще не разрешает подключения пользователей (что приводит меня к подозрению на проблему конфигурации сервера), отображая

Failed to load resource: net::ERR_CONNECTION_TIMED_OUT в источнике serverip/s...polling&t=M-1iSFD:1

, который в конечном итоге превращается в повторяющуюся ошибку GET, которая выглядит следующим образом

GET http://serverip:port/socket.io/?EIO=3&transport=polling&t=M-1idTw net::ERR_CONNECTION_TIMED_OUT в источнике index.js:83

Странно то, что тот же самый точный код (который должен быть добавлен в конце этого поста) иногда разрешает подключение пользователя, работая как задумано, за исключением случаев, когда при перезагрузке страницы код дублирует сокет и создает дублированные события консоли для отдельных событий на стороне клиента, что свидетельствует о том, что к отдельному клиенту подключено несколько сокетов.

Ниже приведен соответствующий код NodeJS, заголовок которого взят из недавних ответов, которые рекомендовали форматирование, которое я использовал ниже для установки sh NodeJS сервера.

const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app).listen(8002);
const io = require('socket.io')(server);
const mysql = require('mysql');

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.php');
});

io.on('connection', function(socket){
    console.log('Client Connected');
    socket.on('chatMessage', function(msg){
        io.emit('chatMessage', { sendmessage: msg.message, sendname: msg.username, sendertag: msg.tag, postpiclink: msg.userpiclink });
    });
    socket.on('disconnect', function(){
        console.log('Client Disconnected');
  });
});

console.log('listening on *:8002');

module.exports = app;

Проблема неспособности соединиться не распространена, возможно, два или три раза в неделю, но это раздражает, потому что он не исправляет себя в течение 4-5 часов. Обычно это происходит после того, как мне нужно убить скрипт до его запуска (когда я убиваю его в середине задач, таких как циклы, например). Однако проблема саморегулируемая, так как я обычно go работаю и возвращаюсь позже, и это работает. Как я уже говорил ранее, учитывая нерегулярность этой ошибки, я подозреваю, что она может иметь отношение к конфигурации моего сервера (который является VPS). Если кто-то считает, что это так, пожалуйста, укажите мне, какие настройки в конфигурации мне нужно изменить, чтобы решить эту проблему.

РЕДАКТИРОВАТЬ: Почти забыл добавить свой код на стороне клиента:

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
<script>
const socket = io('http://serverip:port');
</script
...