PUSH-000064 Не удалось отписаться от клиента - Неверное название темы или селектор
Я видел следующие строки появляются в журнале сервера:
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-опроса?
1 ответ
Это указывает на проблему, вызванную балансировщиком нагрузки, пересылающим запрос на отмену подписки на неверный сервер.
У вас есть клиенты Android, подписывающиеся на один сервер и устанавливающие сеанс с этим сервером, но если этот клиент Android был отключен, например, из-за слабого сигнала или прохода через туннель, клиент попытается восстановить соединение. Когда дело доходит до повторного подключения балансировщика нагрузки, он направляет клиента на другой сервер, который не понимает тему, на которую вы ссылаетесь, когда отписываетесь.
Клиенты iOS, подключающиеся через DPT (встроенный непосредственно поверх TCP), открывают один сокет и остаются подключенными до тех пор, пока соединение больше не потребуется. Это означает, что балансировщик нагрузки включается только один раз, что предотвращает возникновение этой проблемы для этих клиентов.
Используя сессию липкости на балансировщике нагрузки на основе Cookie
HTTP-заголовок или Sticky-IP, как указано здесь в документации по распространению, клиент переподключится к тому же серверу, и проблема будет устранена.