私は Adobe Stratus (現在は Cirrus に名前が変更されています) を使用して p2p アプリケーションを構築しています。アプリケーション内でNetStream.onPeerConnectコールバック関数を使用し、ピアが接続されるたびにトリガーされることを期待していました。しかし、奇妙なことに友人Bは問題なく関数を呼び出すことができたのに対し、友人Aでは常に失敗しました。
この問題の原因は何だろうかと考えていました。
コード部分は次のようになります。
まず、NetConnectionを作成します。
netConnection = new NetConnection();
netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnectionHandler);
netConnection.connect(SERVER_ADDRESS+DEVELOPER_KEY);
次に、NetConnection が正常に接続されたら、 NetStreamを作成します。
private function netConnectionHandler(event:NetStatusEvent):void{
switch (event.info.code){
case "NetConnection.Connect.Success":
sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
sendStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler);
var sendObj:Object = new Object();
sendObj.onPeerConnect = function(subscriber:NetStream) : Boolean {
trace("[onPeerConnect] far id: " + subscriber.farID);
return true;
}
sendStream.client = sendObj;
sendStream.publish("file");
......
3 番目に、2 つのピア間の接続を構築する方法を次に示します。
receivedStream = new NetStream(netConnection, farId);
receivedStream.client = this;
receivedStream.addEventListener(NetStatusEvent.NET_STATUS, incomingStreamHandler);
receivedStream.play("file");
私を啓発するのを手伝ってください。ありがとう!