前段时间自己在本地写的一个 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 希望这次的解答对你们有所帮助。