Возможно, вы захотите расширить свои специальные функции сообщения, и вместо того, чтобы использовать имя пользователя для передачи «РЕГИСТРАЦИЯ», используйте что-то вроде messageType
, чтобы сделать это. Таким образом, вы можете настроить обработчики на основе типа для выполнения ряда задач. Например, такие вещи, как:
MessageType { REGISTER, UNREGISTER, READ_RECEIPT, ... }
Вы можете иметь такие вещи, как:
RegisterHandler {}
UnregisterHandler{}
и в конечном итоге расширять их, чтобы иметь некоторые функции, такие как Facebook / WhatsApp (/ ICQ хаха):
TypingHandler {} // Other user gets a message saying that I am typing to them
С этого момента вы можете реализовать UNREGISTER, чтобы делать то, что вы хотите. Как говорится в первом комментарии, вы должны перехватить SocketException и вручную отменить регистрацию этого клиента, чтобы этого больше не происходило. Но вы также должны попытаться превентивно отправить
{
messageType: UNREGISTER,
from: Client1
to: server|null,
data: {}
}
, чтобы ваш сервер мог удалить его до возникновения исключения. Это также позволит вам обрабатывать автономные сообщения, если это то, что вас интересует.