質問

Adobe Stratus Serviceを使用して、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. 今私の問題;クライアントからサーバーに同じことをして、すべてがうまくいったこと、または何かが失敗したことを通知したいと思います。私が理解していることから、クライアントからサーバーに新しいネットストリームをセットアップする必要があります(つまり、 公開 クライアントと 遊ぶ サーバー上)。しかし、これを達成するには、サーバーを知る必要があります NC.NEARID クライアントについて。

    ユーザーがクライアントからサーバーに手動でコピーすることを強制せずにそのIDを取得することは可能ですか?または、クライアントが私が欠けているサーバーに話しかける簡単な方法はありますか?

役に立ちましたか?

解決

Twitter経由でTom Krchaに連絡しました( http://twitter.com/tomkrcha/status/12882755421 ):彼は私に調べるように言った onpeerconnected(...) NetStreamのプロパティとそれは機能しました。

加入者のネットストリームのファリッドは私の質問を解決しました。

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");

他のヒント

リモートメソッドを介して呼び出して、近くの人々をサーバーに送信してみませんか sendStream.send?

編集: 申し訳ありませんが、それはまったく得られませんでした。サーバー上のクライアント接続を聞くことをお勧めします。 netgroup.neighbor.connect あなたが必要とするものであるべきです:
隣人がこのノードに接続したときに送信されます。 info.neighbor:文字列プロパティは、近隣のグループアドレスです。 info.peerid:文字列プロパティは、隣人のピアIDです。

編集: クライアントが接続したときにイベントを取得した場合は、取得できます すべてのクライアント, 、そしてそれらを使用します farNonce サーバー上、それは nearNonce クライアントの接続されたストリームの。

Greetz
back2dos

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top