2015-04-24 93 views
4

我已經嵌入tomcat 8.0.20並在我的服務器中使用它。我建立tomcat的WebSocket的例子,當我試圖在我的服務器運行的所有4例(回聲,聊天,等..) 我得到信息:WebSocket連接關閉,代碼:1006,同時嘗試運行websocket示例

信息:WebSocket連接關閉,代碼: 1006

在它打印像控制檯(網址爲每個樣品正確)

WebSocket連接到 'WS://本地主機:9763 /示例/網頁套接字/ echoProgrammatic' 失敗: 錯誤在WebSocket handsh期間AKE:意外的響應代碼:302

當我在Tomcat上部署此它顯示404錯誤,而不是302

誰能告訴我可能是什麼原因呢?

在POM,我的依賴性如下

<dependency> 
    <groupId>javax.websocket</groupId> 
    <artifactId>javax.websocket-api</artifactId> 
    <version>1.0</version> 
    <scope>provided</scope> 
</dependency> 

看來,WebSocket的實現都不能正確部署。有人可以幫忙嗎?

+0

你可以寫你的連接嘗試代碼嗎?你想從其他機器或相同的websocket連接? – Sarkhan

+0

@Serkhan我沒有寫任何代碼。我只是建立了tomcat提供的例子並部署了它。 –

回答

0

這完全是一個錯誤。在tomcat示例中,所有的URL都是用示例硬編碼的,但我的上下文是示例(不含s)。那是個錯誤。

4

<dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.0</version> <scope>provided</scope> </dependency>

使用的WebSocket API和Tomcat的(的groupId:org.apache.tomcat)提供的WebSocket實現,而不是一些隨機的第三方jar。

您既可以搜索Maven,也可以查看source youre的res/maven目錄中的pom文件。

作用域「提供」意味着該jar只在編譯時使用,而不是在運行時使用。

BTW,當前版本的Tomcat實現WebSocket 1.1。

掃描websocket端點是由javax.servlet.ServletContainerInitializer的實現觸發的(配置爲META-INF/services/javax.servlet.ServletContainerInitializer文件tomcat-websocket.jar)。