Не удается установить соединение с Socket.IO от Angular до NodeJS - PullRequest
0 голосов
/ 01 августа 2020

Я пытаюсь решить это часами .. если кто-то может мне помочь. Я не могу понять, почему это сообщение отправляет или получает сообщение. сервер.

NodeJS:

// Define Porta
const port = process.env.PORT || 8080;
var server = app.listen(port, function () {
    console.log('Server Online - ' + port);
});

// Socket.io
var io = require('socket.io').listen(server);
io.on('connect', function (socket) {
    console.log(`${socket.id} is connected`);
    socket.on('room', function (room) {
        console.log('room', room)
        socket.join(room);
    });
});

Angular 9:

import * as io from 'socket.io-client'
public socket
public orgId: string = '123abc'

  ngOnInit(): void {
        this.setupSocketConnection();
  }

  chat(nome: string, avatar: number, mensagem: string) {
    io.connect(this.orgId).emit('organizacao', {
      nome: nome,
      mensagem: mensagem,
      avatar: avatar,
    });
  }

  setupSocketConnection() {
    this.socket = io.connect(`http://localhost:8080`, { 
      reconnectionDelay: 1000,
      reconnection: true,
      reconnectionAttempts: 10,
      transports: ['websocket'],
      agent: false, 
      upgrade: false,
      rejectUnauthorized: false
    });
  }

Из моего журнала Console.log на сервере

zEnR7Cp23zcur4_kAAAH is connected
86sIiMA8vRZEN-WcAAAI is connected
SU4K2n9jAx_UO2ndAAAJ is connected
UAwlMpNiZWhw_eo9AAAK is connected
K6myruVum4FPKTeLAAAL is connected
Z5QULdZtdsRo5gC1AAAM is connected

1 Ответ

1 голос
/ 01 августа 2020

Если вы пытаетесь реализовать rooms, прочтите https://socket.io/docs/rooms/

Для вашего случая я вижу, что на стороне сервера вы слушаете событие с именем room, а на стороне клиента вы отправляете на organizacao, а также вам нужно использовать объект socket вместо io, см. здесь https://www.npmjs.com/package/socket.io-client

socket.connect(this.orgId).emit('room', {
      nome: nome,
      mensagem: mensagem,
      avatar: avatar,
    });
...