【问题标题】:Architecture of chatroulette聊天的体系结构
【发布时间】:2010-04-15 06:59:28
【问题描述】:

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

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

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

非常感谢

【问题讨论】:

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


【解决方案1】:

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

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

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

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

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

【讨论】:

  • Stratus 现在已经成熟到第二个版本,代号 Cirrus,更多细节在这里 - labs.adobe.com/technologies/cirrus
  • 我不知道这是否正确 - 根据许可证,不允许在生产中使用 Stratus 或 Cirrus。
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 2018-08-23
      • 2020-09-24
      • 1970-01-01
      • 2015-02-07
      • 2017-01-04
      • 1970-01-01
      • 2012-04-03
      • 2014-02-03
      相关资源
      最近更新 更多