0

我试图弄清楚如何在我的 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));
});

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

4

1 回答 1

1

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

于 2015-10-05T10:26:54.190 回答