2016-09-06 3 views
0

Как я могу откликнуться от интернет-клиента к серверу? У меня есть пользователи, и я добавил их соединения в какой-то комнате. Но я не могу знать, когда они будут в Интернете. Я хочу вернуть свои статуи, но я не знаю, как это сделать. Мои клиенты - Android-телефон.Socket.io, когда клиент Интернет отключается

эта функция не работает.

socket.on("disconnect", function() { 
    var SocketRoom= socket.room; 
    socket.leave(SocketRoom); 
}); 

ответ

2

Клиенты не могут отправлять сообщение через соединение сокета, если они больше не подключены к сети/Интернету. Возможно, вы захотите проверить время ожидания.

Как только клиент подключается к серверу, сервер отправляет сообщение клиенту с фиксированным интервалом времени (например, каждые 5 секунд). Если клиент отвечает на это сообщение, вы знаете, он все еще конденсирован и продолжит вашу логику программы. Если клиент не отвечает на ваше сообщение, они скорее всего не будут подключены к Интернету (или недоступны по другим причинам). Если это так, вы можете заставить их покинуть комнату (например, в вашей функции socket.on("disconnect", ...)).

Обратите внимание:

  • Чем выше интервал ожидания, тем менее точным является фактическое время отключения, но нагрузка на соединение поддерживается на низком уровне.
  • Если клиент не отвечает на проверку тайм-аута, вам может потребоваться повторная попытка отправить сообщение этому клиенту пару раз до принудительного закрытия соединения.
+0

Okay Thats fine. Но ... Мне нужно, чтобы результат обучения был связан с обучением. Если я отправлю каждые 0,1-0,5 с, мой сервер плохо работает, я думаю, что у меня много связи. Как я могу отправить им сигнал? Если я использую этот способ, мой сервер ответит мне слишком поздно? Для этого нет никакого способа? Я использую его сейчас, но мне нужна идея лучше, чем ваша идея. Но ты прав. Если я отправлю какой-то сигнал от сервера к клиенту, и клиент не отвечает мне, то conenction является ложным правильно ... –

+1

Нет, это невозможно, насколько я знаю. Вы не можете отправлять какие-либо сообщения на сервер, если вы потеряли интернет-соединение. ;) Вы можете увеличить таймаут, хотя в большинстве случаев штраф 1-2 секунды. – RicoBrassers

+0

Хорошо, я использую этот путь сейчас :) Просто попроси это. Я думаю, что есть способ для этого: D :) Но мы увидим .. Потому что сигнал изнасиловает мой сервер, который вы знаете :) –

Смежные вопросы