【问题标题】:Websockets not working on at least one machineWebsockets 不能在至少一台机器上工作
【发布时间】:2016-08-13 21:35:33
【问题描述】:

我有一个使用 websockets 的应用程序。 Web 服务器是 glassfish 4.1.1,我们在服务器端使用 @ServerEndpoint 实现 websockets。

到目前为止,在所有计算机上一切正常,当在某个客户的一台笔记本电脑上出现错误时(他使用 Google Chrome):

在 websocket 上执行“发送”失败:仍处于 CONNECTING 状态

在该计算机上,此错误永久出现,阻塞了与 websockets 相关的所有功能。

我们不为 websocket 设置特定端口。所以我假设他们使用的是默认值 - 80。其他页面已成功加载(因此,我们的网站可以从那台笔记本电脑访问)。

你有什么可以挖掘的钥匙吗?为什么只有一台笔记本电脑出现故障? 是否需要提供更多信息?

提前谢谢你!

【问题讨论】:

    标签: javascript websocket glassfish java-websocket


    【解决方案1】:

    可能有很多东西:

    • 防火墙
    • 防病毒
    • Chrome 标志(如运行:chrome.exe --disable-web-sockets)
    • 病毒/恶意软件
    • 中间人 (MitM)

    我建议安装 Firefox。如果 Firefox 没有问题,那么 Chrome 肯定有问题。

    【讨论】:

    • 防火墙或防病毒软件是否可以阻止 websockets,即使它们使用 80 端口?我不能在那台机器上安装我能安装的所有东西。有一些解决方法吗?可能要替换 websockets?
    • 一些反病毒过滤来自 80 端口的内容,甚至阻塞或关闭你的套接字。好吧,如果您想替换 websockets,请更改您的代码以使用 Comet 技术。
    • 感谢您的回答。看来问题出在代理上。 Websockets 无法在代理后面连接。我在那台机器上使用websocketstest.com 找到了它。
    • 我明白了,如果代理在处理数据包,我们可以说它是一种中间人。 ;)
    【解决方案2】:

    我遇到了同样的问题。检查您尝试从前端应用程序连接的端口是什么(您的套接字必须分配给一个端口)。我的 WS 服务器正在侦听 8080 端口,一些用户的传出端口被阻止。我做了一个从 80 到 8080 的代理,现在所有用户都可以访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      相关资源
      最近更新 更多