Архитектура чатрулетки
Может ли кто-нибудь объяснить мне архитектуру Chatroulette? Я думал о похожем проекте, который бы реализовал только поддержку аудио (для начинающих). Это лучший способ настроить этот сервер? Если да, то как мне поступить во флэш, понадобится ли мне flex 4? У меня есть некоторый опыт начинающих с C++, C# и java, но я никогда ничего не разрабатывал для Интернета.
Мне также было интересно, как рандомизатор подбирает участников. Как бы вы написали что-то подобное?
Я, очевидно, довольно невежественен здесь, и я был бы очень признателен за несколько советов относительно этой проблемы - я не ожидаю решения копирования и вставки. Было бы просто приятно услышать, как вы, ребята, будете решать эту проблему.
большое спасибо
3 ответа
AFAIK ChatRoulette использует новый набор API в Flash Player 10.1 под кодовым названием Stratus, который обеспечивает одноранговые соединения между экземплярами Flash Player.
Таким образом, вместо того, чтобы видео- и аудиопотоки передавались на специальный потоковый сервер, например, FMS или Red5, уникальные идентификаторы являются общими, и одноранговые узлы подключаются напрямую друг к другу.
Это дает большие возможности уменьшить нагрузку на сервер для потоковой передачи событий в реальном времени, когда одно соединение с потоком сервера может быть разделено между соседними соседями.
Можете ли вы представить счета за хостинг для чего-то вроде ChatRoulette, если Stratus не проталкивал потоки прямо между пирами?!
Если вы хотите узнать больше, ознакомьтесь с разделом Stratus, посвященным ребятам из Adobe: http://labs.adobe.com/technologies/stratus/
Как вы можете подобрать участников? легко. иметь переменную с именем "ожидающие пользователи", которая изначально установлена в нуль. Когда пользователь подключается, если "ожидающие пользователи" равны нулю, сделайте подключающегося пользователя ожидающим пользователем. Если ожидающие пользователи не равны нулю, создайте новый поток, который управляет беседами этих двух пользователей, и установите ожидающих пользователей на ноль. Эта "случайность" означает, что если у вас много посетителей, разговоры должны быть случайными. Однако если за один раз разговаривают только 10 человек, это не значит, что вы получите потрясающие результаты. Вам нужно постоянное отключение / подключение, чтобы это работало.
С помощью Actionscript вы можете легко получить доступ к микрофону через Microphone.get()
[используйте Google, чтобы получить больше информации]... Вы должны будете передать полученные данные на ваш сервер.
Чтобы не отправлять HTTP-заголовки без остановки, вы должны создать сокет [Actionscript поддерживает это, посмотрите на flash.net.[Socket/Sockets? я забыл]] и подключился к обычному написанному серверу, что легко сделать с помощью C#... я не пробовал это с C++ и не работал с java...
Сервер будет действовать как "прокси" между вашими клиентами...
Он использует потоковый сервер wowza, а не циррус Adobe, который вы не можете использовать в производстве из-за лицензионных ограничений.
http://www.streamingmedia.com/Articles/News/Featured-News/The-Tech-Behind-Chatroulette-66278.aspx