Надо бы в автомате как-то сделать (имхо более полезная фича нежели всякая медиа и даже комнаты).
Я очень хотел сделать, но пока не придумал - как. Объясню, в чём проблема. В обычных мессенджерах, вроде того же Телграм, вы подключаетесь к серверу, установив с ним TCP соединение. Все ваши личные данные (или хотя бы частично) хранятся там - на сервере, который имеет прямой доступ в интернет, его адрес и порт общеизвестны. И если я хочу добавить вас в контакты, то всё происходит просто: я отправляю на сервер запрос вида "дай мне список пользователей". Сервер в ответ присылает. Я нахожу вас и отправляю на сервер запрос вида "хочу установить связь с...". Сервер сохраняет данный запрос, и при следующем вашем подключении перешлёт вам мою заявку, а мне ответ. Дальше - общаемся. Коммунист работает по-другому - у него нет единого централизованного внешнего сервера, соединение идёт напрямую между пользователями. При подключении к сети он отправляет запрос на STUN сервер, чтобы получить свой внешний ip адрес. Это нужно, потому что выход в интернет в большинстве случаев у рядовых пользователей не прямой: запрос идёт через домашний роутер, потом - через роутер провайдера (может быть и больше составляющих). И чтобы соединиться напрямую нам нужно знать ip:port конечного роутера в цепочке. Того, который подключён непосредственно к интернету. STUN сервер в ответном сообщении нам присылает соответствующие данные. Далее мы пользуемся одной лазейкой - из-за недостатка ip адресов если мы очень быстро после получения ответа от STUN сервера отправим пакет на другой адрес, то он скорее всего пойдёт с той же пары ip:port всех роутеров в цепочке - а значит и последнего. При этом в таблице маршрутизации роутера создаётся запись, что был отправлен пакет на ip2:port2. И если нам потом оттуда пришлют ответ, то он пройдёт. Чтобы оппонент знал, куда его присылать, я помещаю мой ip:port в DHT. И помещаю не просто так, а под определённым ключом. Чтобы узнать мой ip:port, оппонент должен знать мой ключ - поиск в DHT осуществляется именно по ключам, а не по информации, которая под ними хранится. И здесь наступает "затык". Допустим, я хочу добавить вас в друзья. Поиск по имени, фамилии или псевдониму я провести не могу, мне в любом случае нужно знать ваш ключ. Можно придумать систему, как в vc например: пользователи оставляют свои заявки на добавление в друзья. Т.е. я выкладываю в DHT, допустим, три ключа, которые буду мониторить, а желающие будут оставлять под ними значения своих ключей. Но тут сразу же несколько "но". Во-первых, желающим всё равно нужно как-то узнать мой ключ. Во-вторых, код открытый и никто не мешает написать какому-нибудь шутнику небольшую программку, которая будет постоянно "забивать" ваши заявочные ключи мусором, не давая другим что-либо под ними поместить. В третьих, в DHT обычно множество узлов, и ответы от них сыплются абы как, в произвольном порядке. Можно организовать анонимную пересылку между всеми пользователями таблиц вида "ключ1 желает добавить в друзья ключ2". Но, во-первых, пока сеть не очень широкая, этот способ ненадёжный, во-вторых - сеть может фрагментироваться (по кругу общения), в третьих - всё равно нужно знать ключ того, кого хочешь добавить в друзья. В общем, всё упирается в то, что нужно организовать поиск в сети DHT по значению, а не по ключу. В торрентовской DHT, которая используется в Коммунисте, этого сделать нельзя, на сколько мне известно. Можно написать свою реализацию, но тут нужно тогда подымать сервер для первичного подключения с прямым доступом в интернет. А у меня нет такой возможности. Ну и отказоустойчивость сети снизится. Сервер - это определённые адрес и порт, которые можно заблокировать. Торрентовская же сеть DHT узлов очень широкая, вероятность блокировки всех узлов гораздо ниже. Добавлю также, что всё, написанное выше, относится к ipv4. С ipv6 всё поинтереснее - не нужен STUN сервер например. Но не знаю как в мире, а у нас с ipv6 сетями проблемы. У пользователей со стационарным интернетом я их не видел (но у меня в этом плане "охват" не очень широкий). У мобильных операторов на удивление есть (не буду называть конкретные компании, кто захочет - сам найдёт). Да и от DHT и поиска по ней всё равно не уйти.