1

私はAdobeStratusサービスを使用してFlash10での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

greetz
back2dos

于 2010-04-26T12:00:29.463 に答える