Вероятно, да. Для установки соединения клиент и сервер обмениваются по сети пакетами. Когда соединение установлено - данные могут передаваться. А могут и не передаваться (неограниченное количество времени) - соединение всё равно считается работающим. Для завершения соединения (по которому можно выдать onDisconnect) одна из сторон отправляет соответствующий специальный пакет. При отключении питания клиент уже ничего не может отправить, поэтому нету определения завершения соединения - для сервера оно всё ещё активно.
Могут быть нюансы: например, если питание отключить на роутере, к которому подключена сетевая карта сервера (или выдернуть кабель из карты), то у сервера может сработать ошибка, по которой он удалит всех клиентов (и выдаст событие onDisconnect). А если сбой происходит за роутером или по другую сторону провайдера, то определить это нельзя.
Тем не менее, есть такая штука как "keep alive", реализуемая в фоновом режиме на уровне API. По соединению с некоторым интервалом отправляются специальные пакеты. Если при отправке произойдет ошибка, то, вероятно, можно будет получить событие onDisconnect. Но в альтернативных компонентах пока не реализовано.
Ответов: 4630
Рейтинг: 749
|
|||
карма: 26 |
|
Редактировалось 1 раз(а), последний 2019-10-21 10:33:23