Это довольно специфический набор проблем, с которыми я сейчас сталкиваюсь при настройке 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