在Java中实现SSE服务器无法保持持久连接

在Java中实现SSE服务器无法保持持久连接,java,javascript,server-sent-events,Java,Javascript,Server Sent Events,我用Java制作了一个简单的HTTP服务器,用于将MIME类型的文本/事件源事件发送到使用EventSource的JS脚本。但问题是EventSource一打开就关闭连接,导致重复连接到服务器 以下是来自EventSource的请求: Accept:text/event-stream Accept-Encoding:gzip, deflate, sdch Accept-Language:en-US,en;q=0.8 Cache-Control:no-cache Connection:keep-a

我用Java制作了一个简单的HTTP服务器,用于将MIME类型的文本/事件源事件发送到使用EventSource的JS脚本。但问题是EventSource一打开就关闭连接,导致重复连接到服务器

以下是来自EventSource的请求:

Accept:text/event-stream
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
DNT:1
Host:localhost:8080
Pragma:no-cache
Referer:http://localhost:8080/dispenser/ui/app/index.html
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36
以下是我的Java服务器的响应:

Cache-Control:no-cache
Content-Type:text/event-stream;charset=UTF-8
Date:Fri Jun 05 11:01:39 NPT 2015
Server:MY-SERVER/1.0
以下是JS代码:

var eventSource=new eventSource(“/my event source”);
eventSource.addEventListener('event1',函数(e){
// ...
});
eventSource.addEventListener('event2',函数(e){
// ...

});服务器端呢?也许服务器正在关闭连接?@Nitek似乎不是这样。我已经使用Wireshark检查了连接,它清楚地显示了客户端发送[FIN,ACK]的情况。但是服务器在做什么?在套接字级别,可能是客户端关闭了连接,但在协议级别,很可能您的服务器脚本正在立即完成,而不是永远运行。事实证明,确实是我的服务器关闭了连接:)抱歉,各位@Ruraj,也许你可以添加一个答案,其中包含关于你如何解决这个问题的更多细节,并将其标记为已回答,以帮助其他人