Простой клиент-серверный чат на Java.
Протокол поддерживает два режима работы:
Сериализованные в байтовые потоки объекты JVM. При использовании данного типа объекты сериализуются и записываются напрямую в поток, где позже считываются принимающей стороной.
Сериализованные в JSON объекты пакеты. При использовании данного типа объекты сериализуются в JSON формат в виде:
{
"type": "%Название пакета%",
"value": { %Сериализованное представление объекта% }
}
С отправки серверу этого пакета начинается общение клиента и сервера.
Уведомляет сервер о версии протокола, поддерживаемой клиентом, и о методе общения пакетами, который предпочитает клиент.
Если сервер не поддерживает предлагаемый протокол и метод общения,
будет возвращено FatalError
и соединение будет закрыто.
Данный пакет всегда отправляется в сериализованном JSON виде.
Уведомляет клиент о том, что сервер принимает условия клиента и готов установить с ним соединение.
Данный пакет всегда отправляется в сериализованном JSON виде.
Запрашивает у сервера уникальный ключ для доступа к чату, отправляя ему предпочитаемое имя пользователя. Валидными считаются имена, соответствующие:
[\\-_0-9a-zA-Z]+
и не длиннее 20 символов.
Если имя уже занято, либо оно не соответствует правилам, будет возвращено
FatalError
и соединение будет закрыто.
После успешного подключения клиента к чату, возвращает уникальный ключ сессии клиента.
Уведомляет цель о произошедшей фатальной ошибке. Сразу после отправки данного пакета, отправитель закрывает соединение.
Запрашивает список имен текущих пользователей в чате. Для запроса требуется уникальный ключ сессии.
Если уникальный ключ сессии не валиден, будет возвращено FatalError
и соединение
будет закрыто.
Возвращает список имен текущих пользователей в чате.
Уведомляет клиента об изменении списка онлайн пользоватлей. Содержит присоединившегося или отключившегося участника чата.
Отправляет сообщение в чат. Для отправки требуется уникальный ключ сессии.
Если уникальный ключ сессии не валиден, будет возвращено FatalError
и соединение
будет закрыто.
Уведомляет клиент о новом сообщении в чате.
Уведомляет сервер о том, что клиент хочет завершить сессию и закрыть соединение. Для отправки требуется уникальный ключ сессии.
Если уникальный ключ сессии не валиден, будет возвращено FatalError
и соединение
будет закрыто.
Уведомляет клиент о том, что его ключ сессии установлен как невалидный и закрывает соединение.