flash - Adobe 卷云 : Quickest way to deliver a chunk of data to a single peer with known id

标签 flash apache-flex actionscript-3 soundcloud-stratus adobe-cirrus

Adobe Cirrus 提供了许多用于点对点数据传输的选项:定向路由、对象复制和多播等等。

我只想将数据发送给一个特定的对等点,其他对等点在传输过程中“看到”它没问题。

我对定向路由(显而易见的答案)的实验进行得并不顺利。所有 sendto... 方法都失败,而 NetGroup.post 在同一个网络组上工作正常。由于可靠性问题,我担心使用直接连接。

有没有人成功地实现了一对一的消息传递策略(不是一对多),它仍然可以在非连接的对等点之间发送消息 - (定向路由)或成功地解决了这个问题?

我正在考虑各种解决方法,但我很困惑这些 NetGroup 方法:sendToNearestsendToNeighboursendToAllNeighbours 只是似乎失败了,没有明显的原因。

最佳答案

netGroup.sendToNearest 应该是最快的,但需要做更多的工作才能让它继续。要处理该消息,您需要监听 NetGroup.SendTo.Notify 事件。但是,您可能会收到消息,但不是它的最终目的地……换句话说,您可能只是 P2P 网络中的中间人,需要将消息转发到下一个最近的目的地节点。因此,在处理 NetGroup.SendTo.Notify 事件时,您需要首先检查您是否是最终目的地。您可以通过检查 event.info.fromLocal 来做到这一点。如果这是真的,那么你就是最终目的地,你应该为所欲为。如果它是假的,您必须积极转发消息。要转发消息,您需要知道最终目的地的 ID 是什么,因此您必须将其实际包含在原始消息中。您可以转发消息,例如...

if (!event.info.fromLocal)
    netGroup.sendToNearest(event.info.message, event.info.message.destination)

据我了解,定向路由基本上应该与发布速度相同,但它不会在每个人实际上不需要时将不必要的数据发送给每个人,从而阻塞网络。此外,定向路由发生在 UDP 上,应该具有与发布相同的缺陷——不能保证交付。保证通过 RTMFP 交付的唯一方法是使用对象复制。

这里有一些关于定向路由的更多信息:http://www.flashrealtime.com/directed-routing-explained-flash-p2p/

关于flash - Adobe 卷云 : Quickest way to deliver a chunk of data to a single peer with known id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6380698/

相关文章:

printing - 打印特定区域(组件)

flash - 制作基本体重秤需要物理知识吗?

actionscript-3 - 如何在 ActionScript 3 中创建数组的浅拷贝

flash - AS3 - 如何从基于文本的文件导入变量?

arrays - 比较两个数组,获取不常见的值

iphone - 使用 Flash iOS 开发连接到互联网

javascript - 如何在 JavaScript 中编辑 <object>

java - 使用 Java 将 Flex 与 Blazeds 集成的问题

java - Dphibernate。代理初始化为 false

apache-flex - flex 3.5 忽略了 minWidth 设置?