前編 シンプルなSIPアプリケーションの構築
最もシンプルなSIPアプリケーションの構築 |
前編では、JAIN SIPの仕様策定リーダーであるNISTが提供するSIP Communicatorを用い、SIPを用いたクライアント同士の呼び出し制御およびJMFを用いた音声チャットアプリケーション(マルチメディアコミュニケーション環境)の構築を行います。
アプリケーションの構成 |
発信者は「ユーザ@IPアドレス」を入力し、「Connect」ボタンをクリックすることで相手を呼び出します。呼び出された相手のアプリケーションでは、呼び出し音が鳴ります。相手は「Answer」ボタンをクリックすることで、相互が通信可能(通話可能)になります。
この呼び出しと応答のプロトコルにSIPが使用されます。SIPの操作はJAIN SIP APIで実装されているSIP Communicatorを用います。通信セッションの確立後は、RTPを用いて、音声や映像の交換が行われます。SIP Communicatorでは、それらをJMF(Java Media Framework)を用い処理します。よって、呼び出しやそれに対しての応答、終了通知などセッションの確立および終了処理がSIPの役割で、その後のメディア操作や送受信は、RTPやJMFで行うことになります。
JAIN SIPクライアントの構築 |
■SIP Communicatorとは
SIP CommunicatorはNISTが提供するJavaクライアントアプリケーションです。このアプリケーションは、ネットワーク上のマシンと双方向音声、映像配信を行うことができます。通信の開始や終了など通信制御にJAIN
SIPを用い、音声や映像の操作はJMFを使用しています。
SIP Communicatorのソースコードは、バイナリダウンロードサイトからダウンロードすることができます。よって、このアプリケーションをベースに自身でさまざまな機能を拡張することができます。また、このNIST SIP Communicator構築プロジェクトに参加し、自分で作成したモジュールを世界に配信することも可能です。なお、このアプリケーションのライセンスポリシーはjava.net(SIP Communicator)から確認することができます。
■JAIN SIPクライアントのインストール
あらかじめJ2SE 1.4か それ以降のバージョンのJDKをインストールしておいてください(UNIX環境の場合はJ2SE1.4.2以降)。
次のサイトからOSに応じたSIP Communicatorのバイナリをダウンロードします。
SIP Communicatorのダウンロードサイト |
なお、前述したようにSIP Communicatorはソースコードを取得することもできます。ソースコードもバイナリ同様、このサイトからダウンロードすることができます。
■SIP Communicatorのインストール
sip-Communicator-*.zipを解凍します。
■SIP Communicatorの起動と設定
1.起動解凍後、sip-Communicatorディレクトリ以下に、sip-Communicator.bat(UNIXの場合はsip-Communicator.sh)ファイルが作成されます。この実行スクリプトを実行すると、SIP Communicator設定ウィンドウが起動します。
SIP Communicator設定ウィンドウ |
2.個人情報の入力
個人情報を入力します。下記の要領に従って入力してください。
Your Name |
レジストリサーバに登録する名前 |
SIP Address |
SIPアドレス(ユーザー名@ドメイン名)
|
個人情報の入力 |
3.SIPレジストリサーバの登録
ここではSIPサーバは用いないため、この情報は必要としませんが、後編のJSLEE Serverを用いた環境で必要としますので設定しておいてください。また、SIPアドレスのドメインは、任意のもので結構ですが、この後JSLEEサーバの環境構築時に、どのドメインに対する呼び出しメッセージを許可するか等を設定しますので、今後SIPドメインを設定する個所では、すべて統一したドメイン名を使用してください。
下記の要領で入力してください。
SIP Server |
SIPレジストリサーバ名 後編で環境構築を行うJSLEE Serverのホスト名を定義します。必ずドメイン名も入れます |
User Name |
SIPレジストリサーバへのログインユーザ名 任意のログイン名を定義します |
SIPサーバ名の設定 |
4.JMFのイニシャライズ
「Start JMF Initialization」ボタンをクリックし、SIP CommunicatorとともにダウンロードしたJMF環境をイニシャライズします。
JMF環境のイニシャライズ |
5.IPアドレスの設定
SIP Communicatorが通信を行うためのIPアドレスです。デフォルトでプライマリのIPアドレスが選択されます。2つ以上IPアドレスがある場合は選択してください。
SIP Communicatorが通信を行うためのIPアドレスの入力 |
6.登録情報の確認
登録情報を確認し「Finish」をクリックして設定を終了 |
以上で設定は完了です。続いてSIP Comuunicatorが起動します。
レジストリサーバへのログイン画面が表示されます。 ここでは、レジストリサーバ環境を使用しませんので、「cancel」をクリックしてください。
SIP Communicatorが通信を行うためのIPアドレスの入力 |
SIP Communicatorが起動します。
起動したSIP Communicator |
この設定をもう1台のSIP Communicator環境でも行ってください。
SIPアプリケーションの実行 |
一方のマシンから<ユーザー名>@IPアドレスでSIP Communicatorをインストールした相手を呼び出します。
ここでは、bob@abc.comからtom@200.1.1.6を呼び出しています。ステータスは、「Dialing」となっています。この間、呼び出されたマシン上では、呼び出し音が鳴っています。
SIPクライアントから相手を呼び出す |
このとき相手を呼び出す際に使用されるSIPのINVITEメッセージは次のとおりです。あて先から、TomをIPアドレスを用いて呼び出していることが分かります。ちなみに後編で紹介するJSLEEを利用した構築では、IPアドレスではなくSIPアドレスを用いて通信を行います。
Call-ID: 71ccc6d035a965d76e2953a84b97dd36@200.1.1.1
|
次に、相手が「Answer」ボタンをクリックすると、画面のようにステータスは「Connected」となり、通信が開始されます。このとき、相手側にビデオ入力デバイスが付いていれば、映像も送信されますので、画面中央の表示位置に、映像が映し出されます。今回使用した環境では、ビデオデバイスは用意していなかったため、グレー表示になっています。
「Hangup」ボタンをクリックすることで、セッションは終了します。
「Answer」ボタンを押すと「Connected」が表示され接続される |
このように相手の呼び出しや終了にSIPを用い、セッションの制御を行いました。しかし、ここではIPアドレスを用い、呼び出しを行ったため、相手がどこにいるかをあらかじめ特定する必要がありました。しかし、現在のネットワーク環境を考えたときに、相手の希望する端末のIPアドレスを把握しておくことは難しいでしょう。そこで、それら問題を解決するのがSIPとIPアドレスのマッチングや状態管理、SIPルーティングを行うSIPアプリケーションです。SIPアプリケーションには大きく分けて、プロキシサービス、レジストラサービスそしてロケーションサービス、リダイレクトサービスがあります。
後編では、それらをJSLEE上で実現する、新しいサービス環境の構築を行います。
2/2 |
INDEX |
||
Javaで音声チャットアプリを作ろう(前編) | ||
Page1 SIPを身近なものにするJAIN SIP JSLEE製品の試行も始まる 本稿のシナリオ |
||
Page2 最もシンプルなSIPアプリケーションの構築 JAIN SIPクライアントの構築 SIPアプリケーションの実行 |
Java Solution全記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|