O.M*_*Koh 2 graphql graphql-subscriptions hotchocolate
我希望能够根据对象 ID 过滤某些操作的订阅。例如我想做这样的事情:
subscription{
onTaskCompleted(taskId: "1"){
taskCompleted{
status
items{
reason
iD
}
}
taskFailed{
status
details{
detail
status
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
仅当 ID 为“1”的任务完成时才会发出该事件。
是否有一种内置的方法可以HotChocolate使用某种类型的过滤来做到这一点?
或者
我是否必须自己添加这种类型的过滤,通过在解析器中执行类似的操作:
if(_taskIds.Contains(taskId))
{
TaskCompletedExecution taskFinished = new TaskCompletedExecution(taskCompleted);
await eventSender.SendAsync(nameof(TaskListSubscriptions.OnTaskCompleted), taskFinished,
cancellationToken);
}
Run Code Online (Sandbox Code Playgroud)
谢谢
你可以这样做:
[SubscribeAndResolve]
public async IAsyncEnumerable<TaskCompletedExecution> OnTaskCompletedAsync(
string taskId,
[Service] ITopicEventReceiver eventReceiver,
CancellationToken cancellationToken)
{
var stream = await eventReceiver.SubscribeAsync<string, TaskCompletedExecution>(
$"on-task-completed-{taskId}", cancellationToken);
await foreach (var data in stream.ReadEventsAsync().WithCancellation(cancellationToken))
{
yield return data;
}
}
Run Code Online (Sandbox Code Playgroud)
要触发它,您可以将它们发布到on-task-completed-123,然后才会将其发送给提供123任务 ID 的订阅者。
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |