![](/img/trans.png)
[英]How can I close the client-side JavaScript 'Hub' connection in SignalR?
[英]How to close connection to sse flux with javascript-client?
我使用spring webflux构建了一个服务器发送事件端点。 我的JavaScript应用程序订阅了该端点并正确接收了已发布的事件。 但是,当调用EventSource.close()
,似乎没有通知发布者客户端关闭了连接。
因此,发布者仍然认为存在订阅,并为此发布事件。
事件流可能永远不会结束,所以我永远不会在发布方收到完整的信号,这意味着客户端必须关闭连接。
我认为发生这种情况是因为close()调用无法达到基础流量。
您是否有解决此问题的解决方案?
@GetMapping(value = INSTANCE_UPDATE_ENDPOINT + "/{dealId}", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<ServerSentEvent<InstanceUpdatedQuery>> getInstanceUpdateEventStreamForDeal(@PathVariable final String dealId) {
return this.instanceUpdatedApplicationEventFlux
.filter(instanceUpdatedEvent -> instanceUpdatedEvent.getDealId().equals(dealId))
.map(instanceUpdatedEvent -> ServerSentEvent.<InstanceUpdatedQuery>builder()
.id(instanceUpdatedEvent.getId())
.retry(Duration.ofSeconds(1))
.data(new InstanceUpdatedQuery(instanceUpdatedEvent))
.build())
}
您应该添加一个处理程序以捕获doOnNext(Signal),然后检测关闭信号并对其进行响应
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.