その他
2014年4月15日
Chrome Appsで簡易Webサーバ構築
はじめに
今回は、Chrome Appで簡易サーバを作ってみます。Chrome AppsはHTML5を使用して作成され、Chromeをプラットフォームとして動作します。Chromeの画面内部で動くのではなく、アプリケーションごとに個別の画面を持ち、デスクトップ型アプリケーションと同様に振る舞います。様々なAPIが提供され、その種類もどんどん増えてきており、ネイティブアプリに近いことを実装できるようになってきました。一度Chrome Appsを作ってみると、HTML5の世界が広がります。
Chrome AppsのAPIでは、Chromeバージョン24からchrome.socket APIが提供され、UDPやTCPでの通信を実行できるようになりました。さらに、バージョン33からは、chrome.socketがdeprecatedとなり、代わりに以下のAPIが提供されています。
この新しいAPIを使用して簡易Webサーバを構築してみたいと思います。
※ ここではChrome Appsの作り方は知っていることを前提にして います。
各種ファイル
今回のアプリケーションはブラウザでhttp://localhost:3000にアクセスすると、Hello worldと表示する簡易サーバです。このアプリケーションは次の4つのファイルから構成されます。
- manifest.json: Chrome Appsの基本情報やパーミッションを記述
- background.js: 画面の構築等を記述
- index.html: 画面の内容
- main.js: 画面内部の処理を記述(後述)
manifest.json
まず、Manifestファイルで最低限のパーミッションのみを記述しておきます。今回は、sockets.tcpとsockets.tcpServerを使用します。なお、これらのパーミッションは、”permissions”の外に記述します。
{
"name": "Asial Blog 2014-04-15",
"description": "Asial blog sample",
"version": "1.0",
"app": {
"background": {
"scripts": ["background.js"]
}
},
"sockets": {
"tcp": {
"connect": "*"
},
"tcpServer": {
"listen": "*"
}
},
"permissions": []
}
background.js
background.jsでは、単に画面を開きます。200×300の画面をディスプレイ左上に表示します。
chrome.app.runtime.onLaunched.addListener(function(launchData) {
chrome.app.window.create('index.html', {
'bounds':