graphql-subscription 不能持续工作
graphql-subscription not working consistently
我们在我们的应用程序中以这种方式使用 graphql-subscription:
当删除事件到达服务器时:
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().
没有通知客户端
我们所有的订阅都出现了这个问题,这只是其中一个例子。
可能是什么问题?
谢谢
我的问题是关闭组件时我们保持打开状态的开放订阅。在某些时候,服务器无法管理所有订阅。
private subscriptions = new Subscription();
...
this.subscriptions.add( <some new subscription> )
...
// when the component destroyed
this.subscriptions.unsubscribe();
我们在我们的应用程序中以这种方式使用 graphql-subscription:
当删除事件到达服务器时:
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().
没有通知客户端我们所有的订阅都出现了这个问题,这只是其中一个例子。
可能是什么问题? 谢谢
我的问题是关闭组件时我们保持打开状态的开放订阅。在某些时候,服务器无法管理所有订阅。
private subscriptions = new Subscription();
...
this.subscriptions.add( <some new subscription> )
...
// when the component destroyed
this.subscriptions.unsubscribe();