Повторно подключите канал websocket redux-saga в случае ошибки или потери сети - PullRequest
1 голос
/ 12 марта 2020

Следующие примеры и документы redux-saga У меня есть функция для создания канала redux-saga для моего сокета следующим образом:

export function* initializeWebSocketChannel(param) {
  const mySocket = new SockJS(endpoints.WS);
  const channel = yield call(createEventChannel, mySocket, param);
  while (true) {
    const { unmountDashboard, response } = yield race({
      unmount: take(FETCH_STOP),
      response: take(channel),
    });
    if (unmount) {
      channel.close();
    } else {
      if (response.data) {
        yield put({
          type: FETCH_SUCCESS,
          payload: response.data,
        });
      }
      if (response.error) {
        yield put({
          type: FETCH_ERROR,
          payload: response.error,
        });
      }
    }
  }
}

Проблема заключается в том, что при возникновении ошибки или при отсутствии inte rnet розетка закрывается и никогда не запускается снова. Как я могу это сделать, если, если такой случай случится, например, каждые 30 секунд, я попытаюсь снова запустить этот канал?

...