2016-06-21 47 views
0

我想運行我的第一個websocket應用程序,並引用this link to get some sample code。我只是簡單地創建了CustomEndPoint,WSClient class,html文件,然後在netbeans IDE上運行它,它像一個魅力一樣工作。websocket代碼不能在Prod Tomcat服務器上工作 - 404錯誤

我試着將它部署到Tomcat服務器,其網址是訪問通過改變ws://wss://使用https上和它的工作對我的開發環境,但是當我部署相同的代碼在生產ENV提示以下錯誤:它扔在控制檯:

WebSocket連接到'wss://xxxxxx-xxx.xxxx。 COM/websoc/ratesrv」失敗:WebSocket的握手過程中的錯誤:意外的響應代碼:404

對於開發環境下面我WS調用工作:

wsocket = new WebSocket("wss://dev_ip:8443/websoc/ratesrv");

爲了督促我使用(注意.COM在網址):

wss://xxxxx-xxxxx.xx.com/websoc/ratesrv

我是否需要在PROD中明確提供端口號?

+0

這取決於。 PROD中的通常情況是,您有一個Web層(apache或任何其他可充當反向代理的Web服務器)。該層定義了重定向規則,例如,對xxxxxx-xxx.xxxx.com/websoc的請求將被重定向到prod_ip:8443/websoc。在這種情況下,你不需要指定端口。我建議使用你的webapp部署一個簡單的文件(index.html),並嘗試訪問xxxxxx-xxx.xxxx.com/websoc/index.html。如果你得到一個404,那麼問題不在於websocket,而是在於web層重定向。 –

+0

@ MarcoA.Hernandez:當我部署戰爭文件時,我可以訪問xxxxxx-xxx.xxxx.com/websoc/index.html –

+0

您的所有呼叫(對index.html和websocket)都是https?你可以嘗試http調用嗎?如果你使用的是反向代理,你能直接訪問tomcat嗎? –

回答

0

您的Tomcat版本是否包含Websockets Runtime?

  • 如果是這樣,您必須從WAR中刪除所有Websockets依賴關係。確保您在將範圍更改爲提供後調用mvn clean。

  • 如果沒有,您應該包括它。如果你想用泰魯斯 - 只是把

<dependency> 
    <groupId>org.glassfish.tyrus</groupId> 
    <artifactId>tyrus-container-servlet</artifactId> 
    <version>1.12</version> 
</dependency> 

<dependency> 
    <groupId>org.glassfish.tyrus</groupId> 
    <artifactId>tyrus-client</artifactId> 
    <version>1.12</version> 
</dependency> 

然後檢查是否有在Tomcat控制檯沒有錯誤,當部署。

+0

已編輯的問題標題。它在一個tomcat上工作,但不在另一個上 –

+0

我測試了一些場景並返回了新的發現。請看一看 –

0

嘗試使用最新版本的tomcat。 tomcat8.5.20爲我工作。

相關問題