Ste*_*ith 5 javascript java spring server-sent-events spring-boot
我有一个关于 Java Spring Boot 中的 SSEEmitter 的问题。我有以下代码在 Java Spring Boot 中建立客户端和服务器之间的连接。我已将 SseEmitter 对象的超时设置为 long 的最大值。
现在发生以下情况:我关闭浏览器中的选项卡,但服务器上的 sseemitter 对象没有关闭。服务器上有很多对象。这会导致内存问题。
@RequestMapping(value = "/subscribe", consumes = MediaType.ALL_VALUE)
public SseEmitter subscribe() {
System.out.println("SUBSCRIBE CALLED!");
System.out.println(emitters.size());
SseEmitter x = new SseEmitter(Long.MAX_VALUE);
try {
x.send(SseEmitter.event().name("INIT"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
x.onCompletion(()->{
System.out.println("ON COMPLETION CALLED!");
emitters.remove(x);
});
x.onTimeout(()->{
System.out.println("ON TIMEOUT CALLED!");
emitters.remove(x);
});
emitters.add(x);
return x;
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能让客户端关闭该对象呢?亲切的问候
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |