前言
前段時(shí)間在本地寫的一個(gè)WebSocket程序部署到服務(wù)器上時(shí)出錯(cuò),通過一段時(shí)間的研究,終于解決了,所以本文就來給大家分析下并給出解決的方法,下面話不多說了,來一起看看詳細(xì)的介紹吧。
本地環(huán)境是:JDK1.8(32位) Tomcat8.0
服務(wù)器環(huán)境是:JDK1.8(64位) Tomcat8.0
本地運(yùn)行是正常的。
在服務(wù)器部署運(yùn)行時(shí)可以打開頁面,并執(zhí)行WebSocket連接失敗并關(guān)閉的代碼。如圖:
問題解決:
1.在Tomcat8部署的項(xiàng)目不要導(dǎo)入catalina.jar和websocket-api.jar這兩個(gè)包,因?yàn)門omcat8自帶有這兩個(gè)包。自己再導(dǎo)入的話會(huì)沖突。
2.
websocket = new WebSocket("ws://192.168.10.119:8080/RMExpertView/test");
IP要寫服務(wù)器的Ip地址,不要寫localhost.
3.調(diào)試遠(yuǎn)程服務(wù)器的webSocket程序時(shí),要關(guān)閉本地的Tomcat服務(wù)器。
問題分析
1.WebSocket的Ip應(yīng)該指向服務(wù)器IP。最終Jsp的代碼會(huì)在本地瀏覽器執(zhí)行,與之連接的IP應(yīng)該是服務(wù)器IP而不該指向本地。
2.包沖突的問題。尤其是Tomcat7升級(jí)到Tomcat8的項(xiàng)目尤其要注意。
3.由于WebSocket是長(zhǎng)連接,如果本地的服務(wù)先跑起來,而后服務(wù)器的WebSocket再跑起來,因?yàn)閣ebSocket地址中的標(biāo)識(shí)字段相同,所以即使服務(wù)器掛掉,即使使用服務(wù)器的ip去訪問依然可以成功,因?yàn)樵L問的其實(shí)是本地的Tomcat服務(wù)器。
Demo下載
鑒于跟我尋求Demo的人太多,附上下載鏈接:http://xiazai.jb51.net/201710/yuanma/WebSocketDemo(jb51.net).rar
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
您可能感興趣的文章:- WebSocket部署服務(wù)器但外網(wǎng)無法連接的解決方法