Conference
(многопользовательские чаты)
Введение
Традиционно считается, что службы передачи коротких сообщений состоят из непосредственного чата двух клиентов, нежели общения многих клиентов одновременно, что называется «групчат» (групповой чат) или «конференция». Функциональность групчатов наследована от таких систем, как Internet Relay Chat (IRC). Jabber-сообщество разработало и внедрило основной протокол групчатов уже в 1999 году. Этот протокол "groupchat 1.0" предоставлял минимальный набор возможностей для комнат общения, но был сильно ограничен в возможностях. Новая спецификация (XEP-0045: Multi-User Chat (MUC)) построена на старом протоколе "groupchat 1.0", обратно совместима с ним, но предоставляет расширенные возможности, такие как приглашения, модерирование и администрирование и специализированные типы комнат.
Использование
Для использования конференций необходимо использовать клиент, поддерживающий MUC. На данный момент большое число клиентов поддерживают его в разной степени. Например, с помощью Psi, Вы можете общаться в конференции, но не можете администрировать и модерировать её (верно до версии 0.10 включительно). Такие клиенты, как Tkabber, JAJC, Bombus поддерживают MUC полностью.
Чтобы войти в конференцию, Вам нужно найти соответствующий пункт меню в вашей программе-клиенте. Например, Join Group в Tkabber или Join Groupchat в Psi. Затем ввести имя комнаты и сервер, на котором она находится, например, conference.jabber.ru. Для того, чтобы создать новую комнату, обычно, нужно просто войти в несуществующую комнату на нужном сервере конференций. Список существующих комнат можно увидеть, используя Service Discovery применительно к серверу конференций.
Типы комнат
- Fully-Anonymous Room — комната, в которой полный или неполный JID посетителя не может быть виден никем, включая администраторов и владельцев комнаты; такие комнате НЕ РЕКОМЕНДУЮТСЯ.
- Hidden Room — комната, которая не может быть найдена любым пользователем с помощью стандартных средств, таких как поиск и Service Discovery.
- Members-Only Room — комната, к которой пользователь не может подключиться, не будучи в её списке пользователей (members list).
- Moderated Room — комната, в которой только пользователи, обладающие правом голоса (voice) могут посылать сообщения всем посетителям.
- Non-Anonymous Room — комната, в которой полный JID посетителя виден всем посетителям, хотя посетитель может выбрать любой никнейм.
- Open Room — комната, в которую может войти любой, даже не находящийся в списке её пользователей.
- Password-Protected Room — комната, в которую можно войти, только набрав верный пароль.
- Persistent Room — комната, которая не уничтожается после того, как последний посетитель выходит.
- Public Room — комната, которая может быть найдена любым пользователям, используя поиск либо Service Discovery.
- Semi-Anonymous Room — комната, в которой полный JID посетителя может быть виден только администраторами и модераторами комнаты.
- Temporary Room — комната, которая уничтожается после того, как последний пользователь выходит из неё.
- Unmoderated Room — комната, в которой любой посетитель может писать сообщения всем посетителям.
- Unsecured Room — комната, в которую любой пользователь может войти, не предоставив корректного пароля.
JID и MUC
Как и всё в Jabber, комнаты имеют свой собственный JID, с помощью которого они могут быть идентифицированы, и с их же помощью производится вход в нужную конференцию.
JID комнаты имеет вид имя_комнаты@сервер_конференций. Например, конференция JRuDevels имеет JID jrd@conference.jabber.ru, что означает, что комната имеет имя jrd и расположена она на сервере конференций conference.jabber.ru. Обычно Вы можете использовать любой сервер конференций посредством S2S-связей между серверами.
JID каждого из посетителей комнаты имеет вид имя_комнаты@сервер_конференций/никнейм, за счёт чего достигается анонимность посетителей. В неанонимных комнатах (и для администраторов анонимных комнат) реальный JID посетителя совпадает с его реальным ником. Например, JID пользователя с никнеймом Binary в конференции jrd на сервере конференций conference.jabber.ru будет выглядеть как jrd@conference.jabber.ru/Binary. Заметим, что так как ресурс в JID чувствителен к регистру, то и никнейм пользователей в конференции чувствителен к регистру, поэтому пользователи Binary и binary могут находиться в одной конференции одновременно, не вызывая при этом конфликта.
Роли
Роль (Role) — это одно из двух измерений позиции посетителя комнаты (прав и положения).
Определены следущие роли, которые может иметь посетитель:
- Moderator
- Participant
- Visitor
- None (отсутствие роли)
Роли являются временными и они не обязаны оставаться за пользователем во время разных подключений его к комнате.
Не существует конкретной привязки ролей к подключениям (см. далее).
Moderator — наиболее властная из всех ролей, которая может управлять некоторыми ролями других посетителей.
Participant — имеет право голоса (voice) всегда.
Visitors — не могут посылать сообщения всем посетителям, когда комната является Moderated.
Типы членства
Определено пять типов членства, которые могут принимать посетители:
- Owner (владелец)
- Admin (администратор)
- Member (простой член)
- Outcast (изгой)
- None (никто)
Тип членства сохраняется за пользователем в течении нескольких входов в конференцию, они назначаются на основе реального неполного JID посетителя.
Member — позволяет администрации комнаты определить белый список пользователей, которые могут входить в комнату типа Members-Only.
Outcast — забанненый пользователь, не имеющий права на вход в конференцию.
Admin — обладает правом редактирования списка модераторов, бана и кика.
Owner — обладает правами конфигурирования, уничтожения комнаты, а также редактирования списка Администраторов и Владельцев.
Поиск комнат
Через Service Discovery можно просмотреть список конференций на определённом сервере.
Не слишком быстрый сервис поиска: http://jc.jabber.ru/