Архитектура чатрулетки - PullRequest
4 голосов
/ 15 апреля 2010

Может ли кто-нибудь объяснить мне архитектуру чата? Я думал о похожем проекте, который бы реализовал только аудио поддержка (для начинающих). Это лучший способ настроить флэш-сервер? Если да, то как мне поступить во флэш, понадобится ли мне flex 4? я У меня есть некоторый опыт начинающих с C ++, C # и Java, но я никогда не разработал что-нибудь для Интернета.

Мне также было интересно, как рандомизатор подбирает участников. Как бы вы написали что-то подобное?

Я, очевидно, довольно невежественен здесь, и я был бы очень признателен за совет Что касается этой проблемы - я не ожидаю копирования и вставки решений. Это было бы приятно услышать, как вы, ребята, справитесь с этой проблемой.

Большое спасибо

Ответы [ 3 ]

11 голосов
/ 15 апреля 2010

AFAIK ChatRoulette использует новый набор API в Flash Player 10.1 под кодовым названием Stratus, который обеспечивает одноранговые соединения между экземплярами Flash Player.

Таким образом, вместо того, чтобы видео- и аудиопотоки передавались на специальный потоковый сервер, такой как уникальные идентификаторы FMS или Red5, используются совместно, и одноранговые узлы подключаются напрямую друг к другу.

Это дает большие возможности уменьшить нагрузку на сервер для потоковой передачи событий в реальном времени, когда 1 соединение с потоком сервера может быть разделено между ближайшими соседями.

Можете ли вы представить счета за хостинг для чего-то вроде ChatRoulette, если Stratus не проталкивал потоки напрямую между пирами?!

Если вам интересно узнать больше, ознакомьтесь с разделом Stratus на Adobe lads: http://labs.adobe.com/technologies/stratus/

4 голосов
/ 15 апреля 2010

Как вы можете подобрать участников? легко. иметь переменную с именем «ожидающие пользователи», которая изначально имеет значение null. Когда пользователь подключается, если «ожидающие пользователи» равны нулю, сделайте подключающегося пользователя ожидающим пользователем. Если ожидающие пользователи не равны нулю, создайте новый поток, который управляет беседами этих двух пользователей, и установите ожидающих пользователей на ноль. Эта «случайность» означает, что если у вас много посетителей, разговоры должны быть случайными. Однако если за один раз разговаривают только 10 человек, это не значит, что вы получите потрясающие результаты. Вам нужно постоянное отключение / подключение, чтобы это работало.

С помощью ActionScript вы можете легко получить доступ к микрофонному устройству через Microphone.get() [используйте Google, чтобы получить больше информации] ... Вам придется передавать полученные данные на ваш сервер.

Чтобы не отправлять HTTP-заголовки без остановки, вы должны создать сокет [Actionscript поддерживает это, посмотрите на flash.net. [Socket / Sockets? я забыл]] и подключился к обычному написанному серверу, что легко сделать с помощью c # ... я не пробовал его с помощью c ++ и не работал с java ...

Сервер будет действовать как «прокси» между вашими клиентами ...

1 голос
/ 31 июля 2011

Он использует потоковый сервер wowza, а не циррус Adobe, который вы не можете использовать в производстве из-за лицензионных ограничений.

http://www.streamingmedia.com/Articles/News/Featured-News/The-Tech-Behind-Chatroulette-66278.aspx

...