(React / redux)使用带有redux的套接字仅发送已更改的状态

时间:2015-09-25 12:58:53

标签: sockets socket.io reactjs redux

我正在试图弄清楚如何在我的react / redux应用程序旁边使用socket.io,并了解在执行此操作时我可以优化多少。所以,在服务器上我有一个非常基本的设置,你可以在这里看到套接字:

store.subscribe(() => {
    io.emit('state', store.getState().toJS());
});

io.on('connection', (socket) => {
    socket.emit('state', store.getState().toJS());
    socket.on('action', function (action) {
        action.headers = socket.request.headers;
        store.dispatch(action);
    });
});

所以唯一与众不同的是我只是将请求标头粘贴到稍后使用的操作上。我想尝试和实现的是这样的 -

 io.connections[i].emit('state')

并添加

socket.on('state', (action) => {
    socket.emit('state', getUserSpecificState(store));
});

这个想法是允许我遍历所有连接,然后使用该连接的套接字来调用特定用户。我不知道这样的事情是否可行,我正在寻找一些可能的反馈来处理回发用户特定信息。仅发回由动作(而不是整个状态)改变的状态部分也是很酷的,然后让前端存储组装状态。任何/所有输入都非常受欢迎,谢谢!

1 个答案:

答案 0 :(得分:1)

看起来处理这个逻辑不是redux的问题,你把它放在一些模块中并使用中间件连接到状态或者只是通过“从外部”使用状态对象。说到州管理,你想要实施什么?看起来像某些CRDT的情况,如swarm.js或diffsync。