1

我一直在使用 Adob​​e Stratus 服务研究 Flash 10 中的 P2P 支持。我已经成功地将数据从一个用户发送到另一个用户,我的问题是我还没有弄清楚如何以某种简单的方式(或作为对第一次呼叫的某种响应)将数据发送回来。

我目前在做什么;

  1. 首先建立与 Stratus 服务的连接

    nc = new NetConnection();
    nc.addEventListener(NetStatusEvent.NET_STATUS, ncStatusHandler);
    nc.connect(APPLICATION_URL + DEVELOPER_KEY);
    
  2. 在“服务器”端,我这样做:

    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");
    
  3. 然后我在客户端调用一个远程函数:

    ...
    sendStream.send("aRemoteFunction", parameterData);
    ...
    
  4. 现在我的问题; 我想从客户端到服务器做同样的事情,通知一切顺利,或者失败了。据我了解,我将不得不设置一个从客户端到服务器的新 NetStream(即在客户端发布并在服务器上播放)。但要做到这一点,服务器需要知道客户端上的nc.nearID

    是否可以在不强制用户手动将其从客户端复制到服务器的情况下获取该 ID?或者,有没有更简单的方法让客户端与我错过的服务器对话?

4

2 回答 2

1

通过 twitter ( http://twitter.com/tomkrcha/status/12882755421 )联系了 Tom Krcha :他告诉我查看 NetStream 的onPeerConnected(...)属性,它起作用了。

订阅者 NetStream 上的 farID 解决了我的问题;

var c:Object = new Object;
c.onPeerConnect = function(subscriber:NetStream):Boolean {
    trace("far id: " + subscriber.farID); // This farID will be the nearID of the connecting "client".

    recvStream = new NetStream(nc, subscriber.farID);
    recvStream.client = this;
    recvStream.addEventListener(NetStatusEvent.NET_STATUS, netRecvStreamHandler);
    recvStream.play("response");

    return true;
};

sendStream = new NetStream(nc, NetStream.DIRECT_CONNECTIONS);
sendStream.client = c;
sendStream.addEventListener(NetStatusEvent.NET_STATUS, netSendStreamHandler);
sendStream.publish("file");
于 2010-04-26T13:53:30.877 回答
0

为什么不通过调用远程方法将nearID 发送到服务器sendStream.send

编辑:对不起,不太明白。我建议,你在服务器上监听客户端连接。NetGroup.Neighbor.Connect应该是您需要的:
当邻居连接到该节点时发送。info.neighbor:String 属性是邻居的组地址。info.peerID:String 属性是邻居的对等 ID。

编辑:如果您在客户端连接时收到任何事件,那么您可以检索所有客户端farNonce,并在服务器上使用它们,这是nearNonce客户端上连接的流的。

问候
back2dos

于 2010-04-26T12:00:29.463 回答