Мы используем graphql-подписку в нашем приложении следующим образом:
Когда на сервер поступает событие удаления:
pubsub.publish('onDeleteItem', {onDeleteItem: [msg.payload.ItemId]});
Решатели:
Subscription: { onDeleteItem: { subscribe: () => pubsub.asyncIterator('onDeleteItem'), }, },
Подписка на него со стороны нашего клиента:
const onDeleteItemSubscription = gql
subscription onDeleteItem {
onDeleteItem
}
getItemsList () {
queryRef.subscribeToMore({
document: onDeleteItemSubscription ,
updateQuery(prev: { itemList: AssetList }, {subscriptionData: {data}}) {
if (!data) {
return prev;
} else {
const deletedItems = (data as any).onDeleteItem;
return {
itemList {... *### //return filtered list*
}
}
}
}
};
Проблема в том, что иногда подписка работает нормально, а удаленный элемент фильтруется, как и ожидалось, но очень часто он просто не работает вообще.Нет журналов ошибок.Когда я отлаживаю его, я вижу, что проблема в том, что pubsub.publish () не уведомляет клиента.
Проблема возникает со всеми нашими подписками, и это только один из них.
В чем может быть проблема?Спасибо.