Клиент Socket-io в Angular 6 пытается установить соединение с неверным сокетом - PullRequest
0 голосов
/ 11 сентября 2018

Я пытался преобразовать приложение, написанное в старом добром javascript, в приложение, написанное на Angular - версии 6. Основная часть этого приложения - установить соединение с внутренним сервером. Для этого я нашел библиотеку "socket.io-client". Как объяснялось во многих вопросах, я установил его с помощью следующих команд:

npm install socket.io-client --save
npm install @types/socket.io-client --save-dev

Затем я использовал эту библиотеку в классе "ChatService", который должен подключаться к сокету:

import {Inject, Injectable} from '@angular/core';
import {Observable} from 'rxjs';
import * as io from 'socket.io-client';

@Injectable()
export class ChatService {
  private socket: SocketIOClient.Socket;

  constructor() {
    this.socket = io('http://127.0.0.1:9092/chat1');
  }

  // EMITTER
  sendMessage(msg: string) {
    this.socket.emit('sendMessage', { message: msg });
  }

  // HANDLER
  onNewMessage() {
    return Observable.create(observer => {
      this.socket.on('newMessage', msg => {
        observer.next(msg);
      });
    });
  }
}

Как и в коде, мой сокет доступен под портом 9092 с комнатой chat1. Интересно, что эта команда io ('url'), похоже, подключается не к тому хосту. За этим можно следить, просматривая сетевой трафик. Здесь можно увидеть следующее: Сетевой трафик

Моему старому приложению удалось подключиться к этому бэкэнд-приложению, поэтому бэкэнд доступен.

Итак, вопрос в том, как настроить приложение для подключения к порту 9092 вместо порта 4200, который является стандартным угловым портом. Есть ли какая-нибудь конфигурация, которая перезаписывает функциональность io ('xxxx')?

UPDATE Кажется, что команда this.socket = io ('xxx') фактически ничего не делает. Изображение сетевого трафика, которое я прикрепил ранее, было тем, которое использует angular для обновления приложения. Есть идеи на этот счет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...