java eventsource_采用java的servlet实现EventSource的服务端,客户端在每次接收请求后会断开,这是为什么?...

问题描述

采用java的servlet实现EventSource的服务端,客户端在每次接收请求后会断开

问题出现的环境背景及自己尝试过哪些方法

jdk版本是1.7

servlet版本是servlet-api:2.5

使用nodejs作为后端时,不会出现每次断开的情况,一次连接后,可多次接收服务端的数据;

相关代码

服务端代码:

public class TestEventSource extends HttpServlet{

private static final long serialVersionUID = 1L;

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/event-stream");

response.setHeader("Cache-Control","no-cache");

response.setHeader("Connection","keep-alive");

response.setHeader("Access-Control-Allow-Origin","*");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();

out.print("data: testEventSource\n");

out.flush();

}

}

客户端代码:

const evtSource = new EventSource('/y/adm/market/message');

evtSource.onopen = function onopen() {

console.log('你创建了一个服务器长连接');

};

evtSource.onmessage = function onmessage(e) {

console.log(e.data);

};

evtSource.onerror = function onerror(e) {

console.log('你进入了onerror方法');

};

你期待的结果是什么?实际看到的错误信息又是什么?

客户端发起请求后,能够收到服务端的数据,但会立刻断开,触发onerror方法;之后每3秒循环一次

eedb87e744b0a0e30a94c2754d34e19e.png

按照我的理解,EventSource应该是一次请求后,保持连接,不断接收服务端返回的数据,不应该断开连接。实际上使用nodejs作为服务端确实是这样的,能够一次请求,多次接收服务端的数据;

问题出在哪里?请大佬指点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值