首页 > 解决方案 > 带有 http 负载均衡器的 GWT 提供了无效的 SID 值

问题描述

我有 2 个 openfire 服务器和一个弹性负载均衡器,并构建了一个 gwt 应用程序,当直接连接到一个服务器时,它在端口 7070 上使用 http 绑定它运行良好,但是当它连接到端口 7070 上的负载均衡器时它不工作并输出错误404 无效的 SID 值

注意:当负载均衡器在 tcp 模式下工作时它工作正常,但是当它的 http 模式下它不起作用并且我需要为它创建一个粘性会话

标签: gwttcpopenfireamazon-elbwebhttpbinding

解决方案


这是因为一旦在一台机器上建立了 BOSH 会话,它就会与这台机器绑定。如果不在 ELB 上启用粘性会话,来自客户端的后续请求可以路由到第二个服务器,在该服务器上没有匹配请求的 BOSH 会话,这反过来会导致 SID 无效(因为 SID 在另一台机器上不存在)。

替代解决方案是(如果机器也公开公共 IP)在 BOSH 响应中返回“主机”信息,因此客户端可以使用该信息,然后向更正机器发出后续请求。但如果这不可能,他们必须使用“粘性会话”。


推荐阅读