在更新状态之后,Reactjs不会复制我的消息
我正在关注这个博客的例子,这个问题在执行之后就引起了我的兴趣
https://github.com/DanialK/ReactJS-Realtime-Chat
总结一下,在通过websocket发送消息之前,消息的状态被更新。 当服务器接收到这个消息时,他们向所有的客户端发送广播,包括我自己。 Thereat,客户端用相同的消息更新状态
为什么这个消息不会出现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的所有者之外的所有者:
socket.broadcast.emit('send:message')
https://github.com/DanialK/ReactJS-Realtime-Chat/blob/master/routes/socket.js