在Redux Saga中重试websockets连接

问题描述 投票:0回答:1

我为朋友们创建了一个小应用程序供我使用。我已经使用Rails和ActionCable实现了Websockets。

我正在实施一个传奇,检查websocket的连通性并通知用户是否已连接。有时连接的连接速度可能很慢,所以我想让它以1秒的间隔检查3/4次。

当前代码如下:

import actionCable from './actionCable';

export function* testSocketsConnectivity() {
  // actionCable.connected() will be set to true when the connection is made
  if (actionCable.connected()) {
    yield put(socketsTestPassed());
  } else {
    yield put(socketsTestFailed());
  }
}

除了少数情况下,此方法工作正常。用户连接时,套接字可能需要花费几秒钟建立连接,到连接时,检查已经失败。我已经将此功能更新为:

function pause(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

export function* testSocketsConnectivity() {
  const attempts = 3;
  for (var i = 0; i < attempts; i++) {
    if (actionCable.connected()) {
      yield put(socketsTestPassed());
    }
    await pause(1000);
  }
  yield put(socketsTestFailed());
}

这确实等待了3次,这允许慢速连接建立套接字连接,否则3次检查后由于没有连接而失败。

但是,我是Redux和Redux Saga的新手,只使用了一周左右,并且想知道在使用Redux Saga而不是通过JavaScript?

javascript reactjs redux redux-saga
1个回答
0
投票

是,有:

[C0中的示例

Saga Documentation
© www.soinside.com 2019 - 2024. All rights reserved.