2

我在服务器日志中看到了以下几行:

2016-06-12 11:21:01.524|WARN|Diffusion: InboundThreadPool
Thread_1|PUSH-000064|Failed to unsubscribe Client Android Client
d42ca1e21c6d32l6-000000030000016a CONNECTED@173.58.11.31 from '!3fga'
- Invalid Topic name or selector.|com.pushtechnology.diffusion.clients.impl.ClientImp

我的理解是客户试图取消订阅一个不存在的主题。

有趣的是,iOS 客户端永远不会输出此日志。

这是否表明有问题?如果是这样,是什么原因造成的,为什么它只影响 HTTP 轮询客户端?

4

1 回答 1

2

这表示由负载平衡器将取消订阅请求中继到错误的服务器引起的问题。

您有 android 客户端订阅一个服务器并与该服务器建立会话,但如果该 android 客户端已断开连接,例如由于信号低或通过隧道,客户端将尝试重新连接。在重新连接时,负载均衡器会将客户端定向到另一台服务器,该服务器不理解您在取消订阅时所指的主题。

通过 DPT(直接建立在 TCP 之上)连接的 iOS 客户端打开一个套接字并保持连接,直到不再需要该连接。这意味着负载均衡器只涉及一次,这可以防止这些客户端出现此问题。

通过在负载均衡器上使用基于CookieHTTP 标头的会话粘性,或如扩散文档中所述的粘性 IP 客户端将重新连接到同一服务器,从而避免了问题。

于 2016-07-29T08:49:50.200 回答