Flash‎ > ‎RTMFP‎ > ‎

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以上にする。そうしないと使えない。


Comments