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
コンパイラの設定でFlash Playerのバージョンを10.1以上にする。そうしないと使えない。