我正在开发一个React Native应用程序,其中我使用redux-observable
作为redux
中间件来管理应用程序状态。我有一个基本上通过这种方式设置的websocket连接:
let websocket: WebSocket;
export function connect() {
websocket = new WebSocket("wss://test.foo.com/abc"));
websocket.addEventListener("open", () => getStore().dispatch(websocketOpen()));
websocket.addEventListener("close", () => getStore().dispatch(websocketClosed()));
websocket.addEventListener("error", () => getStore().dispatch(websocketClosed()));
websocket.addEventListener("message",
(message: Event & {data: string}) => getStore().dispatch(websocketMessage(
JSON.parse(message.data),
)));
}
我正在使用可观察到的Redux史诗处理websocketClosed
动作:
const reopenWebsocket: Epic = (action$) =>
action$.pipe(
ofType(WEBSOCKET_CLOSED),
tap(websocket.connect),
ignoreElements(),
);
除服务器由于Websocket的请求不断而导致服务器不断中断外,此方法工作正常。
我想如果一个websocket已经打开时曾经调用过connect
,那么旧的websocket将被替换
因此会触发旧的websocket的关闭事件,我猜这会导致websocket.connect
,进而触发新的websocket的关闭事件。
我不确定我可以做些什么来更好地处理应用程序中与Websocket的连接,因此服务器不会收到大量似乎可以避免的请求。
预先感谢您对此的任何建议/解决方案。