我试图将用旧的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);
});
});
}
}
如代码中所示,我的套接字可以在带有聊天室1的端口9092下访问。有趣的是,此io('url')命令似乎连接到错误的主机。在调查网络流量时,可以遵循此步骤。在这里可以看到以下内容: Network traffic
我的旧应用程序能够连接到该后端应用程序,因此可以访问该后端。
所以问题是,如何配置应用程序以连接到端口9092而不是端口4200(这是标准的角度端口)。是否有一些配置可以覆盖io('xxxx')功能?
更新 似乎this.socket = io('xxx')命令实际上什么也没做。我之前附加的网络流量映像是angular用于更新应用程序的映像。有什么想法吗?