我一直在使用Adobe Stratus服务研究Flash 10中的P2P支持。我已成功能够从一个用户发送到另一个数据,把我的问题是,我还没有想出如何将数据发送回一些简单的方法(或为某种响应第一次呼叫的)。通过P2P NetStream轻松实现双向通信
目前我在做什么;
首先建立在 “服务器” 端与Stratus的服务
nc = new NetConnection(); nc.addEventListener(NetStatusEvent.NET_STATUS, ncStatusHandler); nc.connect(APPLICATION_URL + DEVELOPER_KEY);
连接我做的:
sendStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS); sendStream.addEventListener(NetStatusEvent.NET_STATUS, sendStreamHandler); sendStream.publish("file");
而对 “客户” 方面:
// remoteFileID.text is manually copied by the user from the server (which is nc.nearID). recvStream = new NetStream(nc, remoteFileID.text); recvStream.client = this; recvStream.addEventListener(NetStatusEvent.NET_STATUS, recvStreamHandler); recvStream.play("file");
然后我调用远程功能的客户端上:
... sendStream.send("aRemoteFunction", parameterData); ...
现在我的问题;我想从客户端到服务器执行相同的操作,通知一切正常,或者失败。据我了解,我将不得不建立从客户机到服务器的新的NetStream(即发布在客户端和发挥在服务器上)。但要做到这一点,服务器需要知道nc.nearID在客户端上。
是否有可能获得该ID不强制手动从客户端复制到服务器的用户?或者,有没有更简单的方法让客户回复我缺少的服务器?
的NetStream sendStream只适用于服务器,并设置为*发布*,所以我只能够从服务器发送数据到客户端上此流(只使服务器的的nearID,这客户端已经知道,因为它用它来连接到服务器)。 – andsve 2010-04-26 12:07:46
@andsve:答案已更新。 – back2dos 2010-04-26 12:19:39
我没有得到任何NetGroup.Neighbor.Connect(我应该吗?),我得到NetConnection.Connect.Success(来自Stratus),然后几个NetStream.Publish。* NetStream.Play。*事件,但没有它们包含我能理解的peerID。 :( – andsve 2010-04-26 12:36:05