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