5

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

我还想知道随机发生器如何匹配参与者。你将如何编写这样的代码。

我显然在这里毫无头绪,我非常感谢有关此问题的一些建议-我不希望复制和粘贴解决方案。很高兴听到你们将如何解决这个问题。

非常感谢你

4

3 回答 3

12

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

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

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

如果 Stratus 不直接在对等方之间推送流,你能想象像 ChatRoulette 这样的托管费用吗?!

如果您有兴趣了解更多信息,请查看 Stratus 关于 Adob​​e lads 的部分:http: //labs.adobe.com/technologies/stratus/

于 2010-04-15T09:19:07.223 回答
4

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

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

为了不必不停地发送 HTTP 标头,您应该创建一个套接字 [actionscript 支持这个,查看 flash.net.[Socket/Sockets? 我忘记了]] 并连接到一个自定义编写的服务器,这很容易用 c# 完成......我没有用 c++ 尝试过,也没有用 java 工作过......

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

于 2010-04-15T07:06:58.210 回答
1

它使用 wowza 的流媒体服务器,而不是 Adob​​e 的 cirrus,由于许可证限制,您无法在生产中使用。

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

于 2011-07-31T14:36:57.377 回答