【问题标题】:cometd returning "402::Unknown Client" error immediately after doing handshakecometd 握手后立即返回“402::Unknown Client”错误
【发布时间】:2018-06-28 05:01:39
【问题描述】:

我有一个使用 CometD Java 构建的应用程序,该应用程序已部署到多个客户端托管实例并且运行良好。但是,在最近的客户端实现中,我们遇到了一个问题,即 Cometd 长轮询请求在握手后立即返回“402::Unknown Client”错误。

因此,浏览器尝试再次握手,成功,但在下一个请求时再次返回 402::Unknown Client 错误。以此类推。

我看不出这个客户端实现和以前的(相同的 jboss/apache 版本等)之间有任何区别,所以我不知道为什么会发生这种情况。

感谢任何想法或建议。

谢谢。

【问题讨论】:

  • 您的服务器是否在负载均衡器后面?
  • 是的,它是负载平衡的。有两个 Web 服务器和两个应用程序服务器。我知道这会发生什么......我将研究如何在负载平衡中处理各个轮询请求。谢谢。

标签: java networking jboss cometd


【解决方案1】:

负载均衡器很可能没有将同一个客户端连接到同一个服务器,它必须这样做。

最好的方法是使用客户端 IP 地址,因为这适用于 HTTP 和 WebSocket 传输;或者,您可以坚持使用 CometD 发送的 BAYEUX_BROWSER cookie。

其他替代方案涉及创建 HTTP 会话并使用其 cookie,但这排除了 WebSocket 传输(或者您必须有另一种机制)。

【讨论】:

  • 负载均衡亲和策略如何影响 websocket 连接?
  • WebSocket 连接只能使用客户端 ip:port 对进行负载平衡,因此您必须配置负载平衡器才能这样做。
猜你喜欢
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
  • 1970-01-01
  • 1970-01-01
  • 2021-01-08
  • 2021-10-06
相关资源
最近更新 更多