angular - Socket.io - 服务器接收消息但不将其发送给客户端?
问题描述
我有这个服务器代码:
//socket IO
let socketIO = require('socket.io');
let io = socketIO(server);
io.on('connection', (socket) => {
console.log('user connected');
socket.on('new-message', (message) => {
io.emit(message);
console.log("socket message " + message);
});
});
这是我的客户服务:
private socket;
private url = 'http://localhost:3000';
constructor(private http: HttpClient) {
this.socket = io(this.url);
}
createMessages(message: Message) {
this.socket.emit('new-message', message.messages[0].messageText);
return this.http.post('http://localhost:3000/messages/', message);
}
getMessage() {
let observable = new Observable(observer => {
this.socket.on('new-message', (data) => {
observer.next(data);
});
return () => {
this.socket.disconnect();
};
})
return observable;
}
和组件代码:
ngOnInit() {
console.log(this.userService.currentUserValue);
this.messageService
.getMessage()
.subscribe((message: string) => {
console.log('Message socket ' + message);
}, error => {
console.log(error + " Error");
});
}
当我运行它时,我的服务器输出:用户已连接和 console.log("socket message" + message);。但是我的客户没有得到回应。
解决方案
你的问题出在你的服务器上。您忘记传递参数来指定事件名称:
socket.on('new-message', (message) => {
io.emit('new-message', message); // add 'new-message' as first parameter
console.log("socket message " + message);
});