Создаём народный чат-рулетку
Чат-рулетку придумал школьник Андрей Терновский в 2009 году. В таком чате можно знакомиться и обсуждать интересные темы со случайными собеседниками. Нужен только браузер, веб-камера и микрофон. Я думаю это хорошая и очень полезная идея. С тех пор появилось не мало клонов сайта Андрея, но в существующих реализациях есть много минусов. Поэтому у меня возникла идея создать чат-рулетку с открытым исходным кодом, где пользователи смогут предлагать свои идеи функционала для реализации. В этой статье сначала изложу свои мысли о целях и проблемах данного сервиса, а в конце поделюсь некоторой технической информацией моей реализации.
Проект я назвал OpenChatRoulette: https://github.com/andchir/openchatroulette
Сайт: https://openchatr.com/ru/
Пока реализован только самый необходимый функционал. В разделе "Issues" вы можете создавать задачи со своими идеями и найденными багами.
Зачем?
Кроме общения между людьми чат-рулетку часто используют видео-блогеры для создания контента. Кто-то из них создаёт развлекательный контент, кто-то политический. На YouTube сейчас такие ролики собирают тысячи просмотров.
Так же чат-рулетка даёт возможность общения одиноким людям. Да, есть и отрицательные стороны таких чатов, об этом позже.
Безопасность
Для создания соединения и передачи потоковых данных (звук, видео, сообщения) по технологии "точка-точка" (P2P) используется WebRTC. Эта технология очень удобна с точки зрения экономии ресурсов, т.к. в основном используются ресурсы двух собеседников, а не сервера, на котором установлено программное обеспечение. Если соединение "точка-точка" невозможно, используется TURN сервер, тогда соединение "точка-точка" (клиент-клиент) превращается в "клиент-сервер-клиент". В любом случае пользователи чат-рулетки должны понимать, что если они хотят сохранить свою приватность, то должны использовать VPN, так же как с посещением любых других сайтов сети Интернет.
Некоторые чаты-рулетки сейчас запрещают собеседникам скрывать свои лица. Но я считаю, что делать этого нельзя, у людей могут быть вполне оправданные причины. Например, они не хотят, чтобы их преследовали по политическим причинам в странах, где отсутствует свобода слова.
Я думаю использование виртуальных веб-камер нужно тоже разрешить, это даёт дополнительные возможности для создания интересного контента, а так же для скрытия при необходимости своего лица. Для борьбы с мошенниками нужно сделать предупреждение о том, что собеседник использует виртуальную веб-камеру (это в планах).
Я думаю всех любителей показывать свои интимные места нужно отправлять в раздел "Знакомства 18+". Позже планируется возможность для модератора отправлять туда насильно.
Авторизация
На данный момент в самых известных чатах-рулетках требуется регистрация и авторизация пользователей (в том числе через соц. сети). Я думаю это сделано для дополнительной возможности блокировки пользователей, чтобы потом предложить им платную разблокировку. Или для возможности деанонимизации пользователей для каких-то целей. По-моему это ещё один очень большой минус существующих чатов-рулеток, который нужно исключить. Как уже говорилось, пользователей можно не банить, а насильно отправлять в отдельную группу в случае нарушения ими правил.
Техническая информация
В своем проекте во фронтенд части я использовал JS-фреймворк Angular c NGXS и Bootstrap, т.к. давно работаю с этими инструментами. На серверной стороне NodeJS с PeerJS. Для определения страны пользователя используется MaxMind GeoIP2. Также на сервере установлен Coturn - TURN/STUN сервер для WebRTC.
Если вам понравился этот проект, прошу делиться своими идеями в комментариях и в разделе задач на GitHub.
ИТ-проекты пикабушников
545 постов3.4K подписчиков
Правила сообщества
0. Запрещены посты вне тематики сообщества
1. Уважайте труд людей, пишите только конструктивную критику,
2. Не выкладывайте информацию по своему проекту чаще 2ух раз в месяц