Chatroulette的体系结构

时间:2010-04-15 06:59:29

标签: flash audio random chat roulette-wheel-selection

有人可以向我解释chatroulette背后的架构吗? 我在考虑一个只会实现音频的类似项目 支持(对于初学者)。设置这个闪存服务器的最佳方法是什么? 如果是这样,我应该如何进入闪存,我需要flex 4吗?一世 有一些初学者的c ++,c#和java经验,但我从来没有 为网络开发了任何东西。

我也想知道随机发生器如何匹配参与者。 你会怎么编码这样的东西。

我在这里显然很无能为力,我非常感谢一些建议 关于这个问题 - 我不希望复制和粘贴解决方案。它 我很高兴听到你们如何解决这个问题。

非常感谢

3 个答案:

答案 0 :(得分:11)

AFAIK ChatRoulette使用代号为Stratus的Flash Player 10.1中的一组新API,允许Flash Player实例之间的对等连接。

因此,视频和音频流不会被推送到特殊的流媒体服务器,如FMS或Red5,唯一的ID将被共享,并且对等体可以直接相互连接。

这有很大的可能性来减少事件实时流的服务器负载,其中可以在近邻之间共享到服务器流的1个连接。

如果Stratus没有直接在同伴之间推送流,你能想象像ChatRoulette这样的托管账单吗?!

如果您有兴趣了解更多关于Adobe小伙伴的Stratus部分:http://labs.adobe.com/technologies/stratus/

答案 1 :(得分:4)

你如何匹配参赛者?简单。有一个名为“waiting users”的变量,最初设置为null。当用户连接时,如果“waiting users”为null,则使连接用户成为等待用户。如果等待用户不为null,则创建一个管理这两个用户对话的新线程,并将等待用户设置为null。这种“随机性”意味着如果您有很多访问者,那么对话应该是随机的。但是,如果你一次只有10个人在进行对话,那就不会让你获得惊人的效果。您需要不断断开/连接才能使其正常工作。

使用actionscript,您可以通过Microphone.get()轻松访问麦克风设备[使用谷歌获取更多信息] ...您必须将收到的数据提供给您的服务器。

为了不必不间断地发送HTTP头,你应该创建一个套接字[actionscript支持这个,看看flash.net。[套接字/套接字?我忘了]]并连接到一个自定义编写的服务器,这很容易用c#完成...我没有用c ++尝试过,而且还没有用过java ...

服务器将充当两个客户之间的“代理”......

答案 2 :(得分:1)

它使用wowza的流媒体服务器而不是Adobe的卷云,由于许可限制,您无法在生产中使用它。

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