关于SSE和Spring的SseEmiter出现的一些问题

末流码农 2018-07-31 10:08:45
现在有个需求是客户端和服务端建立长连接 当服务端发现有新数据插入时给客户端推送消息,用的是SpringMVC(spring版本4.2.6)的SseEmiter,写法和很多demo大同小异。当后台推送消息时浏览器确实很收到,但是在chrome上会报一个错误:net::ERR_INCOMPLETE_CHUNKED_ENCODING。火狐不报错,网上百度的结果很多都说是nginx问题但是我是测试环境直接连得自己电脑所以排除,抓包显示tcp报文不是0结尾,感觉是这个原因引起的。想问下大佬们的看法
...全文
4953 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xtyni129 2021-05-18
  • 打赏
  • 举报
回复
按照这样配nginx , 连接还是pending状态
TedZhou 2020-03-18
  • 打赏
  • 举报
回复 2
找到原因了。通过nginx代理eventSource,需要增加额外的配置确保通畅: location /es/ { proxy_pass http://请求地址/; proxy_set_header Connection ''; proxy_http_version 1.1; chunked_transfer_encoding off; proxy_buffering off; proxy_cache off; gizp off; } ———————————————— 版权声明:本文为CSDN博主「Embrace924」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/embrace924/article/details/92649471
TedZhou 2020-03-18
  • 打赏
  • 举报
回复
我写的SSE通过nginx代理之后,客户端eventsource连接时一直处于pending状态……,还在找原因。
末流码农 2018-07-31
  • 打赏
  • 举报
回复
有没有用过的大佬。。绝对速度结贴 秒回。。在线等 急。。。。。。。。。
末流码农 2018-07-31
  • 打赏
  • 举报
回复
控制层主要的代码
private static List<SseEmitter> emitters = new CopyOnWriteArrayList<>();

/**
* 当有新的链接建立时,新建创建一个SseEmitter对象,放入集合
* 发生onCompletion事件时从集合中移除对应的SseEmitter对象
* @return
*/
@RequestMapping(value = "unauthSSE",produces="text/event-stream;charset=utf-8")
public SseEmitter stream() {
SseEmitter emitter = new SseEmitter();
emitters.add(emitter);
emitter.onCompletion(() -> emitters.remove(emitter));
emitter.onTimeout(() -> emitters.remove(emitter));
return emitter;
}


/**
* 监听NewUser事件,向emitters集合中所有成员推送消息
* @param event
*/
//@ResponseBody
@EventListener(classes = {NewUserEvent.class})
public void onNewUserEvent(NewUserEvent event){
emitters.forEach((SseEmitter emitter) -> {
try {
emitter.send(event.getSource(),MediaType.APPLICATION_JSON);
} catch (IOException e) {
emitter.complete();
e.printStackTrace();
}
});
}

另外有一个定时任务 定时去数据库查询是否有新的数据插入 如果有则publish一个event触发onNewUser方法的消息发送
末流码农 2018-07-31
  • 打赏
  • 举报
回复
抱着要死卵朝天 不死变神仙的态度 发到预生产环境,这个问题居然迷之消失了。。。还有我问下大佬们 我用push.js当网站不是https时候谷歌无法拉取让用户授权的页面。。。手动加网址也不行。。。有办法解决吗

81,115

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧