PUSH-000064 无法取消订阅客户端 - 无效的主题名称或选择器

PUSH-000064 Failed to unsubscribe Client - Invalid Topic name or selector

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

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 轮询客户端?

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

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

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

通过在基于 Cookie HTTP header 或 Sticky-IP 的负载平衡器上使用 session 粘性,如扩散文档 here 中所述,客户端将重新连接到同一台服务器,问题将得到避免。