为什么发送消息的话不能及时同步,需要手动更新呢?

来源: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方法中直接执行即可

0
2
封笺
意思就是可以收发,但是不能及时出现对方发送的消息
2019-06-03
共2条回复

Redux+React Router+Node.js全栈开发

全网唯一的React 16+Redux+React Router4实战课程,学到手是你的真本领!

1822 学习 · 750 问题

查看课程