长时间运行的进程应该在 react+redux 应用程序中“生活”在哪里?
举个简单的例子,考虑一个通过 websocket 发送和接收消息的类:
class WebsocketStreamer {
sendMessage(message) {
this.socket.send(…);
}
onMessageReceive(event) {
this.dispatch({
type: "STREAMER_RECV",
message: event.data,
})
}
}
这个类的生命周期应该如何管理?
我的第一直觉是把它放在store
:
var stores = {
streamer: function(state={}, action) {
if (action.type == "@@INIT")
return { streamer: new WebsocketStreamer() }
if (action.type == "STREAMER_SEND")
state.streamer.sendMessage(action.message)
return state;
}
}
但是,除了有点奇怪之外,也无法WebsocketStreamer
访问该dispatch()
功能,并且它会破坏热重载。
另一个潜在的解决方案是将其保存在全局某个地方:
const streamer = new WebsocketStreamer();
但这具有明显的可测试性含义,并且也破坏了热重载。
那么,一个长期运行的进程应该在 react + redux 应用程序中的什么位置?
注意:我意识到这个简单的示例可以仅使用商店 + 操作提供程序来构建。但我特别想知道长期存在的过程在它们存在的情况下应该存在于哪里。