2

Adobe の rtmfp プロトコルと cirrus サーバーを使用した p2p ゲームがあります。スタンドアローンのフラッシュ プレーヤーで試してみると、すべて正常に動作しているように見えますが、ゲームを Web ページに埋め込むと、突然誰もゲームに接続できなくなります。エラーはありません。接続はしばらくするとタイムアウトします。

ホストで NetConnection を作成する方法は次のとおりです。

netConnection = new NetConnection();
netConnection.maxPeerConnections = 20;
netConnection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
netConnection.connect("rtmfp://p2p.rtmfp.net/3a34e[redacted]af45f80/");


public function onNetStatus(event:NetStatusEvent) : void
{
    var peer:P2PNetPeer = null;
    switch(event.info.code) {
        case "NetConnection.Connect.Success": 
            streamOut = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
            streamOut.client = {onPeerConnect:onPeerConnect};
            streamOut.publish(netConnection.nearID);
        break;
}

クライアント側でもほぼ同じですが、NetConnection.Connect.Success を取得するときは inStream を作成します。

 streamIn = new NetStream(netConnection, farId);
 streamIn.client = {msg:onMessageReceived};
 streamIn.addEventListener(NetStatusEvent.NET_STATUS, onInStreamStatus, false, 0, true);
 streamIn.play(farId);

ゲームが Web ページから実行されている場合、この inStream が問題を引き起こします。スタンドアロン プレーヤーを使用してローカルで実行すると、ほとんどすぐに接続されます。

他の状態とエラーもチェックしていますが、ここでは重要ではありません (前述のように、エラーは発生していません。しばらくするとタイムアウトします)。

ここで何が起こっているのでしょうか?

4

0 に答える 0