服务器已发送事件在Chrome中无效

时间:2018-04-12 11:35:44

标签: javascript java google-chrome tomcat jersey

我正在使用angular 4和java开发一个Web应用程序。我正在使用服务器发送的事件将一些文本数据发送到前端。在后端我使用的是球衣,这是我的后端代码

eventOutput.write(new OutboundEvent.Builder()
       .id(decodedToken)
       .name("responseBody")
       .data(String.class, respBody.toString()).build());

前端我使用角度4,代码看起来像

var evtSource = new EventSource("url");
 source.addEventListener('eventName', (event) => {
    console.log(event);
});

Mozilla Firefox中的一切正常。当我使用带有tomcat和windows的chrome时一切正常。但是使用tomcat + linux和chrome,我在console.as

中看到了错误
  

EventSource的响应有一个不是UTF-8的字符集(" iso-8859-1")。   中止连接。

可能是什么问题。修复是什么?请帮忙。任何帮助,将不胜感激。感谢。

2 个答案:

答案 0 :(得分:4)

Tomcat默认支持charset:iso-8859-1。请尝试

@Produces("application/json;charset=UTF-8")
eventOutput.write(new OutboundEvent.Builder()
       .id(decodedToken)
       .name("responseBody")
       .data(String.class, respBody.toString()).build());

答案 1 :(得分:4)

如果问题是在linux中使用tomcat,则可以更新bin \ startup.sh以下行

export JAVA_OPTS="-Dfile.encoding=utf-8"

请参阅Force tomcat to use UTF-8 in linux教程