我有一个使用CometD Java构建的应用程序,它已部署到许多客户端托管实例并且工作正常。但是,在最近的客户端实现中,我们遇到了一个问题,即cometd长轮询请求在执行握手后立即返回“402 :: Unknown Client”错误。
因此浏览器尝试另一次握手,这是成功的,但是在下一次请求时它再次返回402 :: Unknown Client错误。等等,它重复这样。
我看不出这个客户端实现和之前的版本(相同的jboss / apache版本等)之间存在任何差异,所以我不知道为什么会发生这种情况。
感谢任何想法或建议。
谢谢。
负载均衡器很可能不会将同一客户端粘贴到同一台服务器上,而且必须这样做。
最好的方法是坚持客户端IP地址,因为这将适用于HTTP和WebSocket传输;或者,你可以坚持使用CometD发送的BAYEUX_BROWSER
cookie。
进一步的替代方案涉及创建HTTP会话并使用其cookie,但这排除了WebSocket传输(或者您必须有另一种机制)。