我在这个博客中以这个例子为例,在实现后出现了这个问题
https://github.com/DanialK/ReactJS-Realtime-Chat
总之,在通过websocket发送消息之前,会更新消息的状态。当服务器收到这个消息时,他们会向所有客户端发送一个广播,包括我自己。在那里,客户端用这个相同的消息更新状态
为什么此消息没有出现2次?我不想这个消息出现两次,但我想知道为什么会发生
客户代码:
socket.on('send:message', this.messageRecieve);
...
handleMessageSubmit : function(message){
Messages.push(message);
this.setState({ messages : Messages });
socket.emit('send:message', message);
},
messageRecieve: function(message){
Messages.push(message);
this.setState({ messages : Messages });
},
服务器代码:
socket.on('send:message', function (data) {
socket.broadcast.emit('send:message', {
user: name,
text: data.text
});
});
服务器不会向连接的用户发送消息。
根据socket.io文档,这个API发送给除套接字所有者之外的所有人:
socket.broadcast.emit('send:message')
https://github.com/DanialK/ReactJS-Realtime-Chat/blob/master/routes/socket.js