Reactjs 如何在React/Redux中处理服务器推送消息及其副作用

Reactjs 如何在React/Redux中处理服务器推送消息及其副作用,reactjs,redux,react-redux,Reactjs,Redux,React Redux,考虑以下情况。我正在实现一个聊天,并希望向客户端发送键入指示器,让他们知道用户当前是否正在键入。这些类型指示器通过websocket发送到客户端 需要注意的是,接收键入指示符的客户机并不是发送相应操作的客户机 客户机接收到类型指示符,并将其转换为立即更新状态树的操作。到目前为止还不错 现在,我想在一段时间后通过调度本地操作DELETE\u typing\u指示符来删除键入指示符。此消息不会发送到服务器或任何东西,它只是本地消息。我该怎么做 我不能在行动到达后立即从减速器发出行动,因为这不是减速器

考虑以下情况。我正在实现一个聊天,并希望向客户端发送键入指示器,让他们知道用户当前是否正在键入。这些类型指示器通过websocket发送到客户端

需要注意的是,接收键入指示符的客户机并不是发送相应操作的客户机

客户机接收到类型指示符,并将其转换为立即更新状态树的操作。到目前为止还不错

现在,我想在一段时间后通过调度本地操作DELETE\u typing\u指示符来删除键入指示符。此消息不会发送到服务器或任何东西,它只是本地消息。我该怎么做

我不能在行动到达后立即从减速器发出行动,因为这不是减速器的责任,对吗


我不能在action creator中使用thunk,因为我没有创建action,它是来自服务器的推送通知。

从技术上讲,您确实创建了action,或者至少您是action调用位置的作者。客户端上的某个位置必须有套接字侦听器。在同一个处理程序中,您可以设置一个超时,该超时将分派另一个操作。这可以是在thunk中,也可以是在
componentDidMount
中创建的回调侦听器中。为什么要手动分派操作
DELETE\u TYPING\u INDICATOR
?如果原始操作来自服务器,您应该等待客户端收到另一个指示,该指示告诉您的应用程序分派
DELETE\u TYPING\u indicator
@Mihir:这只是为了保存一些需要通过网络发送的消息。@thalador我认为手动删除键入指示是错误的,不是吗?只要用户在打字,打字指示器就应该保持在那里。如果出现任何网络错误,您可以手动分派
删除\u键入\u指示符
。如果某个特定客户端脱机,您的服务器是否会收到任何通知?如果是这样,您的服务器可以向其他客户端发送消息,说明该客户端已脱机。随后,其他客户端将向其各自的存储区发送
DELETE\u-TYPING\u-INDICATOR
。这并不过分。这是任何聊天应用程序的基本功能:)