我在 Angular 应用程序的客户端上使用ngx-socket-io。我已按照“如何使用”部分中的设置进行操作。
当一个客户端使用此代码连接时,我正在尝试向所有连接的客户端发出事件:
const app = require('express')();
const http = require('http').Server(app);
const io = require('socket.io')(http);
io.on('connect', socket => {
io.emit('foo', 'foo-event');
});
但是,客户端在执行以下操作时永远不会收到此事件:
constructor(
private socket: Socket
) {
this.socket.fromEvent('foo')
.subscribe((e) => {
console.log(e);
});
}
但是,如果我将服务器代码更改为:
io.on('connect', socket => {
socket.on('foo', () => {
io.emit('foo', 'foo-event');
});
});
和客户端代码:
constructor(
private socket: Socket
) {
this.socket.emit('foo');
this.socket.fromEvent('foo')
.subscribe((e) => {
console.log(e);
});
}
然后它按预期工作。
为什么我不能只发出一个事件并在客户端上接收它而不像第二个示例那样首先从客户端发出一个事件?