Последовательность входа на NMDC хаб
Общая (обязательная) последовательность входа на хаб
«Рукопожатие» между клиентом и хабом1
Хаб:2
$Lock [Код] Pk=[PrimaryKey]|
Клиент:
$Key [Рассчитанный_ключ]|$ValidateNick [Ник]|
Хаб:34
$HubName [Имя_хаба]|$Hello [Ник]|
Клиент:5
$Version [Версия]|$GetNickList|$MyINFO [Строка]|
Хаб:6
Отсылает список пользователей
Вход на пальцах выглядит так: Клиент коннектится, сервер отвечает командой $Lock, что мол я такой–то сервер, на что клиент отвечает: ок раз ты такой–то сервер — вот тебе ключ ($Key) и проверь мой ник ($ValidateNick), сервер проверяет ник и отправляет клиенту приглашение на вход под этим ником ($Hello), на что клиент отправляет на сервер внутреннюю версию ($Version), запрашивает список пользователей ($GetNickList) и отправляет информацию о себе ($MyINFO), а сервер отсылает ему список пользователей хаба.
Последовательность входа на хаб, который поддерживает характеристику QuickList
Хаб:
$Lock EXTENDEDPROTOCOL[Код] Pk=[PrimaryKey]|
Клиент:
$Supports QuickList|$Key [Рассчитанный_ключ]|
Клиент:
$MyINFO [Строка]|$GetNickList|
Хаб:
Отсылает список пользователей
См. подробности в характеристике QuickList
Оригинал (by Setuper): http://mydc.ru/ipb.html?showtopic=915&view=findpost&p=6683
- ^ Вне зависимости от данной последовательности, в любом месте входа хаб может отослать клиенту команду чата: «<[Бот_хаба]> Этот хаб работает под управлением...»
- ^ Если в начале параметра команды $Lock присутствует слово EXTENDEDPROTOCOL, то клиент должен отослать на хаб команду с поддерживаемыми им характеристиками $Supports. В ответ хаб должен отослать такую же команду со своими характеристиками. Однако, данный механизм обмена характеристиками фактически является не обязательным.
- ^ Команда $HubName может «выпадать» из этой последовательности и отсылаться, например, после команды $Lock, или вовсе отсутствовать
- ^ При входе, клиент отошлёт команды $Version, $GetNickList и $MyINFO только после того, как получит от хаба команду $Hello [Ник], причём со своим ником, который он отсылал на хаб в команде $ValidateNick. Причём, команда $GetNickList может и вовсе не отсылаться клиентом.
- ^ Команду $Version клиент может отослать и раньше указанного шага (например, непосредственно после $ValidateNick), однако она должна быть отослана до команды $MyINFO.
- ^ При отсылке хабом списка пользователей, хаб руководствуется поддержкой со стороны клиента той или иной характеристики. Подробности см. в описании характеристик NoHello и NoGetINFO.