Соединение через Websocket через группы безопасности EC2 ALB - PullRequest
0 голосов
/ 23 января 2019

У меня есть узел экспресс-сервера, работающий с 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=

Любая помощь?

...