SampleClient

VideoPhoneLabs.mxml と HttpIdManager.as あたりが重要。重要そうなメソッドを抽出。

HttpIdManager extends AbstractIdManager

set service():Object

WebServiceURLをセットする

registerSuccess/Failureイベント発生

register(user:String, id:String):void

doRegister()

HTTPServiceを使って、usernameとidを自前サーバに登録

lookup(user:String):void

自前サーバに登録したuserを探す

userが見つかったらhttpResult()

友達が見つかったらlookupSuccessイベント発生

unregister():void

usernameとidを消す

VideoPhoneLabs.mxml

init():void

カメラとマイクの設定

onConnect():void ## 接続ボタンをクリック

cirrus(開発者固有のURL)にnetConnectionで接続(要DeveloperKey)

ステータス変化したら netConnectionHandler() ->

接続したら connectSuccess() ->

netConnection.nearID を取得できる。これが自分のID。

idManager を作成してイベント(idManagerEvent)を設定。

idManager(自前サーバ)に自分の名前とIDを登録

idManagerEvent(e:Event)

"registerSuccess"イベントなら(自前サーバに自分を登録したら)

loginState が LoginConnecting なら

completeRegistration() -> 後述

"lookupSuccess"イベントなら(相手が見つかったら)

placeCall(i.user, i.id) -> 後述。リモートユーザーの名前とIDを渡す。

completeRegistration() ## サーバに自分を登録完了時。ここ重要。

listenerStreamを設定

listenerStream.client.onPeerConnect = function(caller:NetStream) を作成。接続時に呼ばれる。

incomingStream = new NetStream(netConnection, caller.farID) を作成・再生

incomingStream.client を設定

client.onIncomingCall() ->

相手の名前を表示

client.onIm() ->

メッセージを表示

placeCall(user, identity) ## 電話をかける。相手をlookupした後にリモートユーザーの名前とIDが渡される。

controlStream = new NetStream(netConnection, identity) を作成・再生

outgoingStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);

outgoingStream:NetStreamを作成

acceptCall() ## Acceptボタンを押すと呼ばれる

incomingStream.receiveAudio(true) で音を受信

incomingStream.receiveVideo(true) で映像を受信

outgoingStream.publish("media-callee") で映像を発信

startVideo() ->

outgoingStream.attachCamera(camera)

startAudio()

onCall() ## Callボタン

idManager.lookup()で相手を探す。見つかったらplaceCall。

onSend() ## 送信ボタン

outgoingStream.send("onIm", name, msg)

NetStreamクラスのP2P関係

    • NetStream(connection:NetConnection, peerID:String = "connectToFMS")

      • peerIDを指定する

        • ピアに直接パブリッシュする場合

          • NetStream.DIRECT_CONNECTIONS

        • ピアから直接再生するには識別子を指定

          • NetConnection.nearID

          • NetStream.farID

        • P2Pマルチキャストグループをする場合

          • groupspecストリング

          • groupspecs は、「G:01010b...」のように、「G:」で始まり、16 進数の桁が続く文字列

    • peerStreams:Array 接続したPeerインスタンス

    • onPeerConnect(subscriber:NetStream):Boolean

      • 接続時のコールバック関数を指定

    • プロパティ

      • audioSampleAccess : Boolean

      • videoSampleAccess : Boolean

      • multicastAvailabilitySendToAll : Boolean

      • multicastAvailabilityUpdatePeriod : Number

      • multicastFetchPeriod : Number

      • multicastRelayMarginDuration : Number

      • multicastWindowDuration : Number

GroupSpecifierクラス

コンパイラの設定でFlash Playerのバージョンを10.1以上にする。そうしないと使えない。