socket.io net::ERR_CONNECTION_REFUSED
Только начал изучать сокеты на nodejs и сразу появилась ошибка. В консоли идет ошибка socket.io net::ERR_CONNECTION_REFUSED. Такое ощущение, что клиент при подключении не видит socket.io и от этого все проблемы.
Структура файлов package.json:
{
"name": "html",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1",
"socket.io": "^3.0.5"
}
}
index.js
// Зависимости
var express = require('express');
var http = require('http');
var path = require('path');
var socketIO = require('socket.io');
var app = express();
var server = http.Server(app);
var io = socketIO(server);
app.set('port', 80);
app.use('/static', express.static(__dirname + '/static'));
// Маршруты
app.get('/', function(request, response) {
response.sendFile(path.join(__dirname, 'index.html'));
});
// Запуск сервера
server.listen(80, function() {
console.log('Запускаю сервер на порте 80');
});
// Обработчик веб-сокетов
io.on('connection', function(socket) {
});
setInterval(function() {
io.sockets.emit('message', 'hi!');
}, 1000);
index.html
<html>
<head>
<style>
canvas {
width: 800px;
height: 600px;
border: 5px solid black;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<canvas id="canvas"></canvas>
</body>
<script>
var socket = io();
socket.on('message', function(data) {
console.log(data);
});
</script>
</html>
После подключения к серверу - index.js падает с ошибкой
/var/www/html/node_modules/socket.io/dist/index.js:270
stream_1.pipeline(readStream, zlib_1.createGzip(), res, onError);
^
TypeError: stream_1.pipeline is not a function
at Function.sendFile (/var/www/html/node_modules/socket.io/dist/index.js:270:26)
at Server.serve (/var/www/html/node_modules/socket.io/dist/index.js:246:16)
at Server.srv.on (/var/www/html/node_modules/socket.io/dist/index.js:207:22)
at emitTwo (events.js:126:13)
at Server.emit (events.js:214:7)
at parserOnIncoming (_http_server.js:619:12)
at HTTPParser.parserOnHeadersComplete (_http_common.js:115:23)
Ответы (1 шт):
Автор решения: KordDEM
→ Ссылка
Проблема решена - был включен фаервол, с блокировкой всех соединений кроме порта 80. Отключение фаервола позволило клиенту увидеть socket.io - соответственно все заработало.