簡體   English   中英

如何使用javascript-client關閉與sseflux的連接?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM