3

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

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

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

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

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

4

2 回答 2

2

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/

于 2011-11-04T07:02:01.993 回答
1

好吧,这是您的问题,NetGroup 不是为单个对等“发送”而设计的。正如文档所说,“NetGroup 类的实例代表 RTMFP 组中的成员资格”并且所有这些发送方法都与协议邻居有关(您需要详细了解 RTMFP 的工作原理;它是一个非常巧妙的分散式 p2p 协议)。

您唯一可行的选择是使用直接连接,它与使用 NetGroup 一样可靠。唯一的“可靠性”问题是与对等方的连接。如果您想要更强大的东西,您将需要一个 3rd 方服务器,但根据我的经验,这不是必需的。您只需要让一个客户端监听传入流,并让另一个客户端使用他们的对等 id 连接到另一个对等点(您应该已经通过自己的服务器实现知道对等点 id)。建立连接后,您只需要执行netConnection.send('whatever');.

于 2011-06-17T13:17:56.387 回答