使用从“yo jhipster”生成并以“mvn spring-boot:run”和“grunt server”开始的新脚手架应用程序,我能够加载应用程序并执行登录、查看指标、查看会话、设置、日志等操作和审计。但是,每当我查看“用户跟踪器”页面时,我什么都看不到?
我相信本节应该演示 Atmosphere websocket / AngularJS 集成?查看浏览器控制台日志,我看到以下内容:
Websocket failed. Downgrading to Comet and resending atmosphere.js:2866
GET http://0.0.0.0:9000/websocket/activity?X-Atmosphere-tracking-id=0&X-Atmosph…true&X-Cache-Date=0application%2Fjson&X-atmo-protocol=true&_=1393276976964 404 (Not Found)
似乎尝试了 websocket 连接但最终超时并且后备长轮询不起作用?我正在使用最新的 Chrome(也在最新版本的 Firefox 和 Safari 上尝试过)。
我错过了一些简单的东西吗?
-- 更新 1 --
将其作为 WAR 部署到 Tomcat 7.0.50 会在 User Tracker 页面中显示从 Atmosphere 返回的数据,但它会不断循环尝试获取 WebSocket 连接(HTTP 状态代码 101:切换协议),因此用户数据会定期出现和消失。我在 Chrome 中看到这样的错误:
No suspended connection available. Make sure atmosphere.subscribe has been called and request.onOpen invoked before invoking this method
Tomcat 日志显示以下内容:
[WARN] org.atmosphere.cpr.DefaultAnnotationProcessor - Unable to detect annotations. Application may fail to deploy.
-- 更新 2 --
将其作为 WAR 部署到 Jetty 8.1.14.v20131031(Jetty 9.1.1.v20140108 抛出错误)并使用 Chrome 32.0.1700.107 对其进行测试似乎适用于长轮询的后备传输。然而,与 WebSockets 的初始连接失败了,因为 Atmosphere 出于某种原因认为 servlet 容器是 Tomcat?在服务器日志中,它会引发以下问题:
java.lang.ClassCastException: org.eclipse.jetty.server.Request cannot be cast to org.apache.catalina.connector.RequestFacade
at org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:141)
at org.atmosphere.container.Tomcat7Servlet30SupportWithWebSocket.service(Tomcat7Servlet30SupportWithWebSocket.java:62)
再次感谢您的所有帮助-肯定会取得进展:)
-- 更新 3 --
总结一切:
- 目前“mvn spring-boot:run”和“grunt server”不能一起用于 Websockets 或长轮询
如果您将 JHipster WAR(mvn 包)部署到 Jetty 8.1.14.v20131031,那么它可以工作,但您需要从您的 JHipster pom.xml 中删除以下依赖项,否则 Atmosphere 将不提供 WebSocket 支持:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency>
- 啊。误报——我使用流而不是 websockets 运行它,所以 websockets 仍然有来自 update2 的错误