Соединение обратного вызова клиентов Datasnap KeepAlive не работает - PullRequest
0 голосов
/ 01 мая 2018

Я следовал руководству в Delphi Labs: Datasnap XE - Обратные вызовы , Обратные вызовы, кажется, работают хорошо. Тем не менее, если клиентские стороны простаивают более часа, кажется, что обратные вызовы клиентов перестают работать. Я изменил сервер DSTCPServerTransport.KeepAliveEnabled, .KeepAliveInterval, .KeepAliveTime - но это никак не помогло.

Кто-нибудь знает, как я могу поддерживать связь клиентов сверхурочно?

1 : https://edn.embarcadero.com/article/41374

1 Ответ

0 голосов
/ 02 мая 2018

Я также использую обратные вызовы Datasnap в нескольких приложениях. Мое решение состояло в том, чтобы установить таймер, который измеряет, сколько времени занимает конкретное сообщение (например, «* ping»), которое было отправлено с использованием BroadCastToChannel для получения зарегистрированным обратным вызовом по тому же каналу в том же приложении. Я разрешаю 5 секунд в мобильном приложении, и если эхо моего пинга в это время не получено, я предполагаю, что мой обратный вызов больше не работает. Я делаю то, что я называю "переработкой обратного вызова". То есть я отменяю регистрацию предыдущего обратного вызова (не вызывает ошибок в случае сбоя) и регистрирую новый (мои идентификаторы обратного вызова основаны на отметке времени, поэтому все они уникальны). Мой «таймер пинга» работает с интервалами в 1 минуту, что часто достаточно для моих приложений. Это решение было бы большим количеством кода для представления здесь, поэтому я надеюсь, что мое описание поможет вам найти решение, которое работает для вас. Задавайте вопросы, если вы не уверены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...