V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jonychen1
V2EX  ›  2018

客户端连接 WebSocket 服务器时连接失败会出现的一些问题及解决方案

  •  
  •   jonychen1 · 2018-07-18 14:08:33 +08:00 · 1298 次点击
    这是一个创建于 2101 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1414 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 17:25 · PVG 01:25 · LAX 10:25 · JFK 13:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.