大气回退不起作用?
Atmosphere fallback not working?
我是新手。到目前为止,我已经成功地为我现有的 Tomcat 8 + Spring + Struts2 网络应用程序添加了氛围。我使用的是当前版本(atmosphere-runtime 2.4.24,atmosphere-spring 2.4.20 和 atmosphere.js 2.3.5)。
对于某种简单的状态页面,我已经设法使 SSE 传输正常工作。使用 Google Chrome 或 Mozilla Firefox 效果非常好。我喜欢它!
实施此操作后,我想检查无法支持 SSE(Internet Explorer 和 Edge)的浏览器的回退。在客户端日志中,我可以看到 atmosphere corretly 检测到缺少 SSE 功能并使用回退:
Server Side Events(SSE) is not supported, using request.fallbackTransport (long-polling)
atmosphere.js (3272,21)
Thu May 24 2018 08:54:28 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 2
atmosphere.js (3272,21)
Thu May 24 2018 08:54:28 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 3
atmosphere.js (3272,21)
Thu May 24 2018 08:54:28 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 4
atmosphere.js (3272,21)
Thu May 24 2018 08:54:29 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 2
atmosphere.js (3272,21)
Thu May 24 2018 08:54:29 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: Firing onOpen
atmosphere.js (3272,21)
Atmosphere connected using long-polling
utils.js (879,3)
Thu May 24 2018 08:54:29 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: Firing onOpen
atmosphere.js (3272,21)
Thu May 24 2018 08:54:29 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 3
atmosphere.js (3272,21)
但是即使我可以调试服务器端并看到正在写入 AtmosphereResource 的消息,也没有数据到达客户端。
这就是我在客户端初始化大气连接的方式:
request = {
url: '<s:url value="/public/sse/ci" />',
contentType: "application/json",
method: 'POST',
logLevel: 'debug',
transport: 'sse',
reconnectInterval: 5000,
fallbackTransport: 'long-polling'
};
谁能给我一个正确方向的提示?
亲切的问候,
塞巴斯蒂安
好的。
我终于让它工作了。就像在 this Whosebug question 中一样,我在我的服务器配置中添加了 TrackMessageSizeInterceptor
而不是在客户端配置中。
也许其他人会来这里阅读答案。
我是新手。到目前为止,我已经成功地为我现有的 Tomcat 8 + Spring + Struts2 网络应用程序添加了氛围。我使用的是当前版本(atmosphere-runtime 2.4.24,atmosphere-spring 2.4.20 和 atmosphere.js 2.3.5)。
对于某种简单的状态页面,我已经设法使 SSE 传输正常工作。使用 Google Chrome 或 Mozilla Firefox 效果非常好。我喜欢它! 实施此操作后,我想检查无法支持 SSE(Internet Explorer 和 Edge)的浏览器的回退。在客户端日志中,我可以看到 atmosphere corretly 检测到缺少 SSE 功能并使用回退:
Server Side Events(SSE) is not supported, using request.fallbackTransport (long-polling)
atmosphere.js (3272,21)
Thu May 24 2018 08:54:28 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 2
atmosphere.js (3272,21)
Thu May 24 2018 08:54:28 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 3
atmosphere.js (3272,21)
Thu May 24 2018 08:54:28 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 4
atmosphere.js (3272,21)
Thu May 24 2018 08:54:29 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 2
atmosphere.js (3272,21)
Thu May 24 2018 08:54:29 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: Firing onOpen
atmosphere.js (3272,21)
Atmosphere connected using long-polling
utils.js (879,3)
Thu May 24 2018 08:54:29 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: Firing onOpen
atmosphere.js (3272,21)
Thu May 24 2018 08:54:29 GMT+0200 (Mitteleuropäische Sommerzeit) Atmosphere: ajaxRequest.onreadystatechange, new state: 3
atmosphere.js (3272,21)
但是即使我可以调试服务器端并看到正在写入 AtmosphereResource 的消息,也没有数据到达客户端。 这就是我在客户端初始化大气连接的方式:
request = {
url: '<s:url value="/public/sse/ci" />',
contentType: "application/json",
method: 'POST',
logLevel: 'debug',
transport: 'sse',
reconnectInterval: 5000,
fallbackTransport: 'long-polling'
};
谁能给我一个正确方向的提示?
亲切的问候,
塞巴斯蒂安
好的。
我终于让它工作了。就像在 this Whosebug question 中一样,我在我的服务器配置中添加了 TrackMessageSizeInterceptor
而不是在客户端配置中。
也许其他人会来这里阅读答案。