ここではチャットアプリを例に説明します。
チャットアプリは、以下のフォルダーに格納されています。
<製品インストールフォルダー>\sample\chat
/opt/FJSVimsrv/sample/chat
チャットアプリ
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
IMAPSアプリを作成するためには以下のJavaScriptファイルをインクルードする必要があります。
<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script> <script type="text/javascript" src="js/imaps.js"></script>
双方向通信サービスと利用するためには以下のJavaScriptファイルをインクルードする必要があります。
サーバ名の部分は、 双方向通信サービスをインストールしたサーバを指定してください。
ポート番号はデフォルトの3300の場合を想定しています。
<script src="http://サーバ名:3300/socket.io/socket.io.js"></script>
サンプルのチャットアプリでは、「servername.js」内で「サーバ名」を指定しています。
ルームに参加するための画面では、ルーム名と参加者名を決定し、指定したルームに参加します。
基本の流れは、
ルームに参加 → メッセージ送受信 → ルーム退室
となりますので、ルーム参加後の画面ではメッセージ送信と退室操作のみでき、参加操作はできないようにすることがポイントです。
チャットアプリでは参加するための画面とメッセージ送受信の画面を表示/非表示の切り替えるようにし、1つのHTMLファイルで実装しています。
<select id="room"> <option value="roomA"> roomA </option> <option value="roomB"> roomB </option> <option value="roomC"> roomC </option> </select>
document.addEventListener("deviceready", function(){ // 双方向通信サービスとの処理 }, false);
socket = io.connect('http://サーバ名:3300/websocket');
socket.on('connect', function () {});
'join'イベントとルーム名と参加者名をサーバに送信します。
function sendjoin () { var r = document.getElementById("room").value; var n = document.getElementById("name").value; socket.emit('join', { 'room': r, 'name': n }); }
送られてくるデータ(data)は、ルーム名と参加者名とIDであり、data.room、data.name、data.idで参照可能です。
socket.on('join', function(data) { var value = 'Join [' + data.room + '] as [' + data.name + '] '; document.getElementById("JoinRoom").innerHTML += value; });
メッセージをサーバに送信しています。
'send'イベントとメッセージをサーバに送信します。
function sendAll() { var data = msgBox.value; socket.emit('send', { 'data': data }); msgBox.value = ""; }
function sendPerson() { var toId = document.getElementById("toId").value; var ids = []; ids.push(toId); var myself = false; var data = msgBox.value; socket.emit('send', { 'ids': ids, 'myself': myself, 'data': data }); msgBox.value = ""; }
送られてくるデータ(data)は、送信者名とメッセージとIDであり、data.name、data.data、data.idで参照可能です。
socket.on('receive', function(data) { var value = data.name + ': ' + data.data; update(value); });
送られてくるデータ(data)は、参加者名とIDであり、data.name、data.idで参照可能です。
socket.on('coming', function(data) { var value = '[' + data.name + '] has come.'; update(value); });
function leavebtn(){ socket.emit('leave'); };
送られてくるデータ(data)は、退室した参加者の名前とIDであり、data.name、data.idで参照可能です。
socket.on('leave', function(data) { var value = '[' + data.name + '] has left.'; update(value); });
送られてくるデータ(data)は、接続を切断した参加者の名前とIDであり、data.name、data.idで参照可能です。
socket.on('disconnect', function (data) { var value = '[' + data.name + '] has disconnected.'; update(value); });
画面の構成やViewを指定します。一般的なCSSと同等です。
2.4.8 アイコンの作成(任意)を参照してください。
im-appdef.xmlを作成します。
<?xml version="1.0" encoding="utf-8"?> <imaps-application> <name>チャット</name> <version>1.0</version> <apiset>2.1</apiset> <description>双方向通信 チャット</description> <icon>icon.png</icon> <toolbar-setting> <forward>visible</forward> </toolbar-setting> </imaps-application>
参照
詳細は付録A IMAPSエージェントアプリケーションのパラメーターファイルを参照してください。
2.5 パッケージングを参照してください。