客户端连接WebSocket服务器时连接失败会出现的一些问题及解决方案
前段时间自己在本地写的一个WebSocket程序部署到服务器出现了几个错误,我自己也做了记录和分析,最后总结出来给大家看一下,希望能帮助大家规避掉这些问题。同时给现在正在做WebSocket和正准备想做WebSocket的程序猿多指出一条较为效率的路。
Q1 客户端链接WebSocket服务器时连接失败,报404错误。
排查了地址错误和配置相关后,是因为JAR冲突,因为Tomcat7及以上,在Tomcat根目录的lib里已经有了websocket-api.jar,部署项目的时候如果项目的wen-inf的lib下也有websocket-api-jar会冲突,导致连接不上。
Q2 本地运行正常,连接到服务器上时出错
本地环境:JDK1.8(32位)Tomcat8.0
服务器环境:JDK1.8(64位)Tomcat8.0
本地运行是正常的,在服务器部署运行时可以打开页面,并执行WebSocket连接失败并关闭的代码。
在Tomcat8部署的项目不要导入catalina.jar和WebSocket-api.jar这两个包,因为Tomcat8自带有这两个包。自己再导入的话会有冲突,还有就是IP写服务器的IP地址,不要写localhost,在调试远程服务器的Websocket程序时,要关闭本地的Tomcat服务器。
Q3 客户端链接WebSocket服务器成功后,测试消息推送获取session失败。(java WebSocket)
这时一定要注意,客户端连接服务器时的地址如果使用了localhost:8080/,那么浏览器也一定要使用localhost:8080/,不然两个请求不是同一个session,所以会获取不到。
Q4 WebSocket链接服务器报302错误
链接重定向,可以检查一下是不是后台访问机制的问题,还有可以看一下是不是URL路径不对。
这是我写的WebSocket程序部署到服务器出现的几个错误以及解决方法,如果我下次还会用到WebSocket这块我可能会选择第三方的……不想在这块花太多时间。
现在免费的第三方WebSocket服务有很多,我就不一一列举了,拿个比较简单容易上手的GoEasy,调用了一个Rest API就OK了。如果你不是专业做服务器的,我建议可以使用这种第三方的,比较节省时间。
GoEasy地址:www.goeasy.io
希望这次的解答对你们有所帮助。