Я пытался преобразовать приложение, написанное в старом добром 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 для обновления приложения. Есть идеи на этот счет?