×
Namespaces

Variants
Actions

WRT Widgetでチャットアプリケーションを作成する方法

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata
Article
Translated:
By fnjwikimng
Last edited: hamishwillee (01 Aug 2012)


以下に示すガイドでは、JavaScriptPHP で実装される、簡単なチャットクライアントを作成する方法について示します。

Contents

動作原理

チャットのためのプロトコルとして、HTTP はあまり理想的なプロトコルではありません。実際のチャットサーバーを持ちたい場合は、IRC または Jabber を使用する必要があります。

ステートレスプロコトルで制限を克服できない一方で、少なくとも AJAX 技術ではサーバーを落とさずにWebチャットを実装することが可能です。しかし、実際のモバイルチャットについては、可能な限りリソースの効率を考えて実装される必要があります。

現在のチャットは、サーバー上での操作をより簡潔にするために拡張する必要があり、トラフィックを軽減するために、更新データのみクライアントへ送信する必要があります。

Chat.jpg

JavaScript

下記コードは、外部サーバへの呼出しを生成する方法を示しています。

    function sync(aMsg) {		
url = "http://localhost/forumnokia/forumnokia.php?msg=" + aMsg;
msg_sync = aMsg;
ext_doc = new XMLHttpRequest();
ext_doc.onreadystatechange = onMsgLoad;
 
try {
ext_doc.open("GET", url, true);
ext_doc.send(null);
} catch(e) {
alert(e);
}
}
 
function onMsgLoad() {
if(text_doc.readyState == 4|| text_doc.readyState == "complete") {
divMessaging = document.getElementById("divChatMessaging");
divMessaging.innerHTML = ext_doc.responseText;
}
}

PHP

以下のPHPファイルは、ある固有リソース中でのサーバサイドロジックを保有するため、本サンプルで使われます。

<?
function add_message($msg, $log_dir, $full_path) {
if(file_exists(($log_dir . '/'))) {
$f = fopen($full_path, "a");
$dt = date("Y-m-d h:i:s");
$msg = urlencode(strip_tags(stripslashes($msg)));
$msg = "$dt $msg\n";
$remote = $_SERVER["REMOTE_ADDR"];
 
fwrite($f, $msg);
fclose($f);
 
return $msg;
} else {
@mkdir("log", 0700);
add_message($msg);
}
}
 
function load_message($msg, $full_path) {
$content_array = file($full_path);
$saved = array_slice($content_array, -20);
$result = '';
 
foreach ($saved as $value) {
$result .= $value . '<br />';
}
 
if($msg != '1')
$result = substr($result, stripos($result, $msg) + strlen($msg) + 7, strlen($result));
if(strlen($result) == 0)
$result = 'nodata';
 
return $result;
}
 
$action = $_REQUEST['act'];
$msg = $_REQUEST['msg'];
 
$log_dir = 'log';
$log_file = 'wall.html';
$full_path = $log_dir . '/' . $log_file;
 
if(isset($msg)) {
if($action == 'add') {
echo add_message($msg, $log_dir, $full_path);
} else {
echo load_message($msg, $full_path);
}
}
?>

必要事項

Widgetのロジック部分はJavaScriptで記述され、XMLHttpRequest APIを使用して、PHPで記述されたサーバーからデータをリクエストします。 チャットメッセージは、より簡潔にするため、テキストファイルとして格納します。

今後の作業予定

本チュートリアルを補完するものとして、Flash Liteインタフェースを使用することができます。それにより、音声サポートを追加したり、クライアント側に(オプションの)ソケット接続を確立することができます。

Adobe Mobile and Devices Developer Center に があります。ここでは、Flash Lite 2.1以降で使用できるXML Socket接続を使用し、Java NIO Serverを使用して、モバイルFlash Liteマルチプレイヤーを作成する方法のハンズオンデモを提供しています。

フォローアップ

全ソースコードが必要な場合は、こちら にご連絡ください。また、Widget開発においてより確かに利用することができる、多くのリソース類があります。そのいくつかについては、以下のサイトをご確認ください。

Widgets for the S60 Platform eLearning

Getting Started with Web Runtime Widgets for S60 Screencast

Web Developer's Library

This page was last modified on 1 August 2012, at 08:23.
43 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×