Adobe Cirrus:将一块数据传递给具有已知id的单个对等方的最快方法



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

我只想把数据发送给一个特定的对等体,其他对等体在传输过程中"看到"它也没关系。

我的定向路由实验(显而易见的答案)并不顺利。所有发送。。。方法失败,而NetGroup.post在同一个网络组上运行良好。由于可靠性,我担心使用直接连接。

是否有人成功地实现了一对一消息传递策略(而不是一对多),该策略仍然可以在未连接的对等体之间发送消息-(定向路由)或成功地解决了此问题?

我正在考虑各种变通方法,但我很困惑这些NetGroup方法:sendToNearestsendToNeighbour&sendToAllNeighbours似乎毫无原因地失败了。

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/

好吧,这是你的问题,NetGroup不是为单个对等"发送"而设计的。正如文档所说,"NetGroup类的实例代表RTMFP组中的成员身份",所有这些发送方法都与协议邻居有关(您需要更多地了解RTMFP的工作原理;这是一个非常巧妙的去中心化p2p协议)。

你唯一可行的选择是使用直接连接,它和使用NetGroup一样可靠。唯一的"可靠性"问题是与对等端的连接。如果你想要更健壮的东西,你需要一个第三方服务器,但根据我的经验,这是不需要的。您只需要让一个客户端侦听传入流,并让另一个客户端使用其对等体id连接到另一个对等体(您应该已经通过自己的服务器实现知道了对等体id)。当建立连接时,您只需要执行netConnection.send('whatever');

最新更新