更新状态后,Reactjs不会复制我的消息

时间:2014-09-01 00:47:27

标签: node.js websocket socket.io reactjs

我正在关注此博客的示例,并在实施

后出现了问题

https://github.com/DanialK/ReactJS-Realtime-Chat

总结一下,在通过websocket发送消息之前,消息的状态会更新。 当服务器收到该消息时,他们会向所有客户发送广播,并将自己发送给我。 Thereat,客户端使用相同的消息更新状态

为什么此消息不会出现2次? 我不希望该消息出现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
    });
});

1 个答案:

答案 0 :(得分:5)

服务器不会将消息发送给连接的用户。

根据socket.io文档,此API发送给除套接字所有者以外的所有人:

socket.broadcast.emit('send:message')

https://github.com/DanialK/ReactJS-Realtime-Chat/blob/master/routes/socket.js