|
|
Подключение к серверу.
Как нетрудно догадаться, авторизация пользователя начинается с подключения к серверу.
Для создания клиентского сокета используется AF_INET (он, в свою очередь,
используется для указания семейства протоколов IPv4. Адрес основного сервера DMconnect
всегда представлен в виде IPv4, так что этот параметр никогда не меняется).
Для сокета потока DMconnect использует SOCK_STREAM, этот параметр также никогда не
меняется.
Приём и отправка сообщений.
На стороне сервера все ваши отправленные сообщения "хранятся" ровно столько времени,
сколько это нужно для отправки всем пользователям на подсервере. После этого имя
отправителя и текст сообщения будет невозможно извлечь. Время отправки на сервере также
не сохраняется. Сообщения всегда работают в кодировке UTF-8, а клиенты работают
с параметром recv в значении 1024 байта, т. е. количество принимаемых данных
не ограничено. На сервере ситуация аналогична - сообщения можно отправлять любого
размера, ограничитель "вшит" в сам официальный клиент.
Для отправки сообщения, нужно воспользоваться созданным ранее сокетом подключения и
функцией, как ни странно, отправки и кодирования (.encode) в UTF-8.
Выход с сервера.
Для выхода с сервера (выход с определённого подсервера не поддерживается), нужно
закрыть соединение с сервером через ваш клиентский сокет. Сервер отправит всем
пользователям подсервера, на котором вы были, сообщение вида:
*** ВАШЕ ИМЯ has left the server.
Также, для "предохранения", сервер автоматически закрывает соединение с вашим
клиентским сокетом (только при TCP-подключении), в WebSocket же такого
"двойного разрыва" нет.
Система WebSocket.
Протокол DMconnect также поддерживает работу с WebSocket, она во многом аналогична
TCP, но есть мелкие отличия:
при подключении клиента по WebSocket, ему не будет отправлено сообщение "Enter
command (/login /register):";
при общении с сервером, WebSocket, как и сервер, не используют никакого
кодирования / декодирования в другие кодировки, в отличии от TCP;
системные сообщения на WebSocket приходят "исходными", т. е. без каких-либо
лишних символов (см. ниже);
при отключении клиента, у сервера нет "системы предохранения" (см. выше), т. е. он
не разрывает соединение дважды.
Системные сообщения.
Обратите внимание, что большинство системных сообщений (обычно, во время
авторизации пользователя) по TCP могут приходить с лишними знаками переноса ("\n").
Обычно, примерно с двумя или тремя. Дабы этого избежать, в парсерах рекомендуется
добавить автоматическое удаление переносов / лишних пробелов.
С WebSocket такой проблемы нет.
| |
|
|
|
|