![](/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.