Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript客户端关闭与sse flux的连接?_Javascript_Java_Spring_Server Sent Events_Reactor - Fatal编程技术网

如何使用javascript客户端关闭与sse flux的连接?

如何使用javascript客户端关闭与sse flux的连接?,javascript,java,spring,server-sent-events,reactor,Javascript,Java,Spring,Server Sent Events,Reactor,我用SpringWebFlux构建了一个服务器发送事件端点。我的javascript应用程序订阅该端点并正确接收已发布的事件。但是什么时候打电话 EventSource.close()似乎没有通知发布者客户端已关闭连接 因此,发布者仍然认为存在订阅,并向该订阅发布事件 事件流可能永远不会结束,因此我从未在发布服务器端获得完整的信号,这意味着客户端必须关闭连接 我认为这是因为close()调用无法到达底层通量 你有解决这个问题的办法吗 @GetMapping(value=INSTANCE\u UP

我用SpringWebFlux构建了一个服务器发送事件端点。我的javascript应用程序订阅该端点并正确接收已发布的事件。但是什么时候打电话
EventSource.close()
似乎没有通知发布者客户端已关闭连接

因此,发布者仍然认为存在订阅,并向该订阅发布事件

事件流可能永远不会结束,因此我从未在发布服务器端获得完整的信号,这意味着客户端必须关闭连接

我认为这是因为close()调用无法到达底层通量

你有解决这个问题的办法吗

@GetMapping(value=INSTANCE\u UPDATE\u ENDPOINT+“/{dealId}”,products=MediaType.TEXT\u EVENT\u STREAM\u value)
公共流量getInstanceUpdateEventStreamForDeal(@PathVariable最终字符串dealId){
返回此值。instanceUpdatedApplicationEventFlux
.filter(InstanceUpdateEvent->InstanceUpdateEvent.getDealId().equals(dealId))
.map(InstanceUpdateEvent->ServerSentEvent.builder()
.id(instanceUpdateEvent.getId())
.重试(持续时间秒(1))
.data(新InstanceUpdatedQuery(instanceUpdatedEvent))
.build())
}

您应该添加一个处理程序来捕获doOnNext(信号),然后检测关闭信号并对其作出响应

您应该添加一个处理程序来捕获doOnNext(信号),然后检测关闭信号并对其作出响应