P2Pネットストリームを介した簡単な双方向通信
-
01-10-2019 - |
質問
Adobe Stratus Serviceを使用して、Flash 10のP2Pサポートを検討しています。あるユーザーから別のユーザーにデータを送信することに成功しました。私の問題は、簡単な方法でデータを送信する方法(または最初の呼び出しに対する何らかの応答として)を見つけていないことです。
私が現在していること。
最初に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); ...
今私の問題;クライアントからサーバーに同じことをして、すべてがうまくいったこと、または何かが失敗したことを通知したいと思います。私が理解していることから、クライアントからサーバーに新しいネットストリームをセットアップする必要があります(つまり、 公開 クライアントと 遊ぶ サーバー上)。しかし、これを達成するには、サーバーを知る必要があります 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