異なるデバイス間の通信の種類 Flash/AIR

以前はPCオンリーの環境でしたが、スマートフォンやタブレットなどが台頭してきたので異なるデバイス上での通信などが必要になるケースが有ると思います。自分にもそういう案件が降ってきたのでメモ程度に通信タイプをまとめてみました。

※曖昧なので誤りがあれば指摘ください!

  1. 同じLAN内にあるデバイス間の通信P2P
  2. P2P(要サーバー)
  3. FMS(FlashMediaServer)
  4. XMLSocketによる通信
  5. webSocketによる通信

同じLAN内にあるデバイス間の通信P2P

一切サーバーを経由させずにLAN内のデバイス間通信ができます。ただし、通信がLAN環境に依存します。※PCとスマホ間を通信する場合、スマホが3Gで接続しちゃうとNG

参考資料:
HIMCOさんの解説ページ
GroupSpecifier クラス解説

P2P

とても自由度が高い半面、デバイスとデバイスをつなぐ時のみサーバーが必要。つないだ後はP2Pで通信。サーバー側のサービスは有料のLCCSCirrusなどがある。通信はクライアント同士なのでFMSのようなサーバー配信タイプと違って通信コストがとても安く抑えられます。

※LCCSにはデベロッパー用の無料アカウントもあったり、チャットやサンプルも充実してたりします。
※Cirrusはまだβっぽいです。

参考資料:
LCCSでP2Pマルチキャストのビデオ配信を行うサンプル
Cirrusの仕組みと接続サンプル
上条さんによるRTMP/RTMFP解説

FMS(Flash Media Server)

昔からあるFlash Media Serverです。映像配信がメインのイメージがありますが、SharedObjectクラスをつかって双方向通信もできます。ただ、FMSはどちらかというと映像配信向けのソリューションなので双方向通信だけで見た場合は上記のP2PやXMLsocket通信のほうが実装しやすいかと思います。最近では安価な従量課金タイプのAdobe Flash Media Server on Amazon Web Servicesなどもリリースされています。さらに映像配信もP2Pでできたりするので安定した配信をしたい場合はFMS選択となる感じでしょうか。こちらはFMS側にサンプルが充実しているので資料は割愛。

XMLSocket通信

これもFlash ver5あたりから存在するXMLSocketで双方向通信を実現することができます。通信はクライアント←→サーバ間で行うため常時サーバーが必須になります。ただこのサーバーがAdobeが用意していないので自前サーバーを用意して、サーバー側のプログラムも作成しないといけないという敷居の高さが存在します。大人数、大容量の通信は向いてません。

参考資料:
XMLsocket接続サンプル(cantenaさんのブログ)
XMLsocketサーバ(ダウンロードたけし(寅年)の日記)
XMLsocketサーバ(バスキュールさんのFaces)

websocketによる通信

なんでFlashにわざわざXMLSocketがあるのにHTML5のwebsocketAPIを使うのか?なんて疑問に思うかもしれませんがFlash←→HTML5でつくったサイトというケースもあるので一応書きます。まずこれを実現するためにはHTML5対応ブラウザという壁を乗り越える必要があります。またjsを経由するのでjs←→flash間のやり取りを行う必要があります。さらにサーバーサイドのプログラムも自前で準備します。

(追記)2/22 GREEの中の方がwebsocket Actionscript Clientを作ってるそうです。GREEさんの場合はnode.jsをメインに使ってる関係でwebsocketを採用したそうです。AIRの場合はXMLSocketやP2Pがあるのでパフォーマンス重視の場合はこの選択肢は選ばないほうがいいかもしれません。

参考資料:
websocket+Flash+js(gimiteさんのブログ)

  1. コメントはまだありません。

  1. トラックバックはまだありません。