2014-02-24 107 views
3

隨着從「yo jhipster」生成並以「mvn spring-boot:run」和「grunt server」開始的新腳手架應用程序,我可以加載應用程序並執行操作,如登錄,查看指標,請參閱會話,設置,日誌和審覈。但是,每當我查看「用戶跟蹤器」頁面時,我什麼都看不到?JHipster Atmosphere websocket無法連接

我相信這部分應該演示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顯示數據從用戶跟蹤頁面大氣回來,但它不斷循環試圖獲得一個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到碼頭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 -

概括一切:在服務器日誌,它會引發以下問題:

  1. 目前「MVN春天啓動:運行」和「咕嚕服務器」不在一起的WebSockets或長輪詢
  2. 工作
  3. 如果部署JHipster WAR(MVN包)到碼頭8.1.14.v20131031那麼它的工作原理,但你需要從JHipster的pom.xml或者消除大氣中以下依賴將不提供的WebSocket支持:

    <dependency> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-tomcat</artifactId> 
    </dependency> 
    
  4. Argh。虛驚一場 - 我有它運行使用流,而不是WebSockets的,所以的WebSockets仍然有來自UPDATE2

回答

3

誤差不,你不會錯過任何:-)

如果你直接使用它的Java服務器應該工作:你需要用另一個瀏覽器(或另一個標籤)連接到應用程序,你會看到工作。

但是,對於「grunt server」,有一個錯誤:Grunt代理只是不支持WebSocket,所以它不起作用......有一件奇怪的事情,因此,這是後備傳輸不工作。

我正在填充這個bug。

- 更新1 -

關於您的更新,它看起來還有另一種氣氛錯誤: http://atmosphere-framework.2306103.n4.nabble.com/Log-warning-that-Atmosphere-is-unable-to-detect-annotations-td4658159.html

似乎Atmopshere不能找到一個WAR中的註釋,你可以嘗試同樣的開發模式(「mvn spring-boot:run」)?這意味着這是Tomcat中WAR的問題

+0

感謝您的快速響應!我嘗試構建一個WAR(開發模式)並將其部署到Tomcat 7.0.50,它顯示用戶跟蹤器頁面中的數據,但它在Chrome的控制檯中引發了一堆錯誤(我更新了上面的錯誤信息),因此連接不會似乎不太可靠。 –

+1

我相應地更新了我的答案:-) –

+0

我在上面添加了 - 更新2 - 。 Jetty8似乎適用於長輪詢的後備傳輸,但最初的WebSocket連接失敗,因爲Atmosphere認爲servlet容器是Tomcat出於某種原因 –