为什么发送消息的话不能及时同步,需要手动更新呢?
来源:10-6 聊天功能实现-下

封笺
2019-05-06
1回答
-
阿甘油
2019-06-02
首先需要在server.js里面监听发送到服务端(sendmsg)的消息。插入数据库成功后之后,需要把这条消息返回到客户端(io.emit('receivemsg', Object.assign({}, d._doc));)。
io.on('connection', function(socket){
socket.on('sendmsg', function(data){
const { from, to, msg} = data;
const chatId = [from, to].join('_');
Chat.create({chatId, from, to, content: msg},function(e, d) {
io.emit('receivemsg', Object.assign({}, d._doc));
});
})
})
redu.js 里面设置监听函数 (socket.on('receivemsg', function(msg) {),当有‘receivemsg’事件被触发时会自动接收到数据。并通过(recevMsg触发)reucers更新state.
export function recvMsg() {
return (dispatch, getState) => socket.on('receivemsg', function(msg) {
const usrId = getState().user._id;
dispatch(recevMsg(msg, usrId));
});
}
在组建中,需要将recvMsg 方法在页面渲染完成后就设置一般在 componentDidMount方法中直接执行即可
022019-06-03
Redux+React Router+Node.js全栈开发
1822 学习 · 750 问题
相似问题