У меня есть узел экспресс-сервера, работающий с Websocket и на стороне клиента, соединение ts, которое работает внутри контейнера, но я пытаюсь подключиться извне и не могу связаться.
- У меня есть сервер за маршрутом 53, который подключен с ALB.
- У ALB есть Целевая группа с открытым портом сокета.
- Слушатель ALB открыт там, где расположен сервер.
- Группы безопасности имеют 0.0.0.0, открытые для всего трафика.
Это код с сервера:
`
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const http = require('http');
const socketio = require('socket.io');
const app = express();
const profile = process.env.profile ? process.env.profile : 'devaws';
const config = require(`${__dirname}${path.sep}config${
path.sep
}${profile.trim()}`);
const status = 'INIT';
app.use(
'/health',
require('express-healthcheck')({
healthy: function() {
return { status: status };
}
})
);
app.use(
'/info',
require('express-healthcheck')({
healthy: function() {
return {
build: {
artifact: config.name,
name: config.name,
group: config.group
}
};
}
})
);
app.use(
express.static(path.join(__dirname, 'dist'), {
index: 'index.html'
})
);
app.use(bodyParser.json());
app.get('/', function(req, res) {
res.sendFile(path.join(__dirname + '/dist', '/index.html'), {
enconding: 'utf8'
});
});
/* ************** Server ************** */
let server = http.createServer(app);
const io = socketio(server); //iniciando el server de socket.io
server.listen(config.port, () => {
port = server.address().port;
ip = server.address();
console.log(server);
console.log('------------------------------------------------');
console.log(`Profile: ${profile}`);
console.log(`Application Address: ${config.host}:${config.port}`);
console.log('------------------------------------------------');
console.log(`Socket server running in : ${ip}:${config.port}`);
console.log(ip);
});
/* ************** Server ************** */
io.on('connection', function(socket) {
//imprimiendo el id del cliente conectado
console.log(`client: ${socket.id}`);
});`
Клиент внутри того же сервера и контейнера без проблем соединяется с io.connect (), но когда я пытаюсь подключиться извне, используя http://dns:4000/socket.io, ошибка, которая дает мне следующее:
Соединение WebSocket с 'wss: //simulator.cashlight.io: 4000 / socket.io /? EIO = 3 & transport = websocket' не удалось: WebSocket закрывается до установления соединения.
Тогда это:
Соединение WebSocket с 'wss: //simulator.cashlight.io: 4000 / socket.io /? EIO = 3 & transport = websocket' не выполнено: Ошибка при установлении соединения: net :: ERR_CONNECTION_TIMED_OUT
Мне нужно связаться с этим сервером сокетов снаружи, из другого контейнера. Так же протяни
https://amritb.github.io/socketio-client-tool/#url=aHR0cHM6Ly9zaW11bGF0b3IuY2FzaGxpZ2h0LmlvOjQwMDAvc29ja2V0Lmlv&opt=&events=
Любая помощь?