Комната

Материал из [matrix] на Русском
Перейти к: навигация, поиск

Комната — основной механизм для общения участников в сети matrix. При первом взгляде на большинство клиентов пользователь может обратить внимание, что комнаты бывают многопользовательские, объединяющие множество участников, и приватные для общения двух участников друг с другом. В действительности, существенной разницы между ними нет: комнаты 1:1 отличаются только наличием специального флага "Direct chat", можно превратить такую в многопользовательскую, просто пригласив туда третьего участника.

Адресация комнат[править]

В существующей на конец 2018-го года схеме адресации (v1) для каждой комнаты при её создании регистрируется уникальный внутренний mxid нечеловекочитаемого вида, например, !gTQfWzbYncrtNrvEkB:matrix.org . Для удобства пользования многопользовательские комнаты также получают от своего создателя основной mxid вида, например, #ru.matrix:matrix.org . Кроме того, каждый пользователь сети matrix может создать на сервере, где сам зарегистрирован, для любой комнаты сети т.н. "алиас", например, #ru.matrix:tchncs.de . Предназначение алиасов частично пояснено в последующем разделе. При наличии прав модератора пользователь также может опубликовать комнату в каталоге комнат своего сервера.

Отказоустойчивость[править]

Комнаты в матриксе имеют два уровня дублирования на серверах.

  1. Стоит пользователю какого-нибудь сервера Б зайти в комнату на другом сервере А, сервер Б, если ещё не делал этого ранее, создаёт у себя копию этой комнаты и участвует в наполнении комнаты контентом наравне со всеми остальными серверами, участники которых уже присутствуют в комнате. Это происходит автоматически, никаких дополнительных действий выполнять не требуется. Такое дублирование даёт следующее преимущество. Если какой-либо из серверов (даже исходный сервер А) будет отключён или потеряет соединение с сетью, пользователи других серверов, находящиеся в комнате, никак от этого не пострадают: они продолжат общение между собой. Когда потерявшийся сервер вернётся в сеть, он подтянет пропущенную историю сообщений. Между тем, пользователи третьих серверов, ранее не подключавшихся к этой комнате, не смогут войти в комнату, если будет недоступен сервер с исходным адресом комнаты.
  2. Чтобы обойти последнее ограничение, для комнаты, имеющей адрес на сервере А, можно создать "алиас" на другом сервере Б. Создать алиас на своём сервере может любой его пользователь, имеющий право создавать там комнаты; права администратора или модератора комнаты для этого не требуются. Теперь, даже если сервер А будет остановлен, пользователи третьего сервера В смогут подключиться к комнате, используя её адрес на сервере Б.