react-native AWS PUBSUB无法重新连接

时间:2019-06-09 17:46:29

标签: amazon-web-services react-native publish-subscribe saga

我的应用程序中存在网络操作,每次应用程序重新连接到Internet时都会触发fetchUser。

我还有另一个传奇,如下所示

export function* watchNewMessage() {
  const { id = {} } = yield take(SET_USER_ID)
  const channel = yield call(subscribeToNewMessages, id)
  while (true) {
   const message = yield take(channel)
   console.log(message)
  }
}

现在的问题是,当应用程序断开连接时,我停止接收消息了,这很好,因为我的侦探应该重新启动saga函数,但是由于它陷入了while true循环中,因此永远都不会等待被重置。那么,如何在每次调用SET_USER_ID时更改要重置的代码?

这是其余的相关代码

export function subscribeToNewMessages(id) {
  return eventChannel(emit => {
    const pubsub = fetchNewMessage(emit, id)
    return () => {
      pubsub.unsubscribe()
    }
  }, buffers.expanding(100))
}

export const fetchNewMessage = async (emit, id) => {
  return PubSub.subscribe(`${IOT_PREFIX}/discussion/${id}/message`).subscribe({
    next: data => { emit(data.value) },
    error: () => console.log('error'),
    close: () => console.log('close'),
  })
}

1 个答案:

答案 0 :(得分:0)

好的,我已经开始工作了

我创建了一个新函数

导出功能* watchNewMessage(){   产生takeLatest(SET_USER_ID,manageSubscription) }

导出功能* manageSubscription(){   const {id = {}} =收益(SET_USER_ID)   const channel = yield call(subscribeToNewMessages,id)   而(true){    const message = yield take(channel)    console.log(消息)   } }

现在它可以完美运行