Raspberry Piの通信対戦シューティングゲーム

下記のサイトを参考しながら進む。

http://www.atmarkit.co.jp/ait/articles/1210/10/news115_2.html

ExpressとSocket.IOを使用している。

$ git clone git://github.com/coppieee/node-shooting-demo.git
$ cd node-shooting-demo
$ npm install
$ node app

動かしてみるが、ShootingサンプルStart押して、白画面になり、反応がなく、304 Not Modified沢山でたので、どこが問題だ

chen@juno ~/node-shooting-demo $ node app
Express server listening on port 3000
GET / 200 173ms – 297
GET /stylesheets/style.css 200 162ms – 296
GET /javascripts/jquery-1.8.0.min.js 200 160ms – 90.39kb
GET / 200 28ms – 297
GET /stylesheets/style.css 304 23ms
GET /javascripts/jquery-1.8.0.min.js 304 25ms
GET /game 200 13ms – 442
GET /stylesheets/style.css 304 24ms
GET /javascripts/jquery-1.8.0.min.js 304 16ms
GET /javascripts/client.js 200 43ms – 3.54kb
GET /images/unit.png 200 42ms – 1.45kb
GET /images/bullet.png 200 40ms – 852
GET /game 200 18ms – 442
GET /stylesheets/style.css 304 61ms
GET /javascripts/jquery-1.8.0.min.js 304 49ms
GET /javascripts/client.js 304 25ms
GET /images/unit.png 304 30ms
GET /images/bullet.png 304 30ms

備考:

翌日気を取り直して、再テストしたら、上手くできた!

 

スクリーンショット 2015-04-17 21.05.40

 

Raspberry Piのチャットサービス

Raspberry PiにNote.js、ExpressとSocket.IOを使用して簡単なチャットアプリを作ってみる。

chen@juno ~ $ npm install -g express
chen@juno ~ $ npm install socket.io

サンプルコードのダウンロードと実行、Socket.IOを使ったアプリではクライアントからメッセージを受け取り、処理した内容をクライアントに送信するといった処理になる。

chen@juno ~ $git clone git://github.com/coppieee/node-chat-demo.git
chen@juno ~ $cd node-chat-demo
chen@juno ~ $npm install
chen@juno ~ $node app

ブラウザからアクセスしてみる

image

複数ブラウザからチャットできると、確認した。コンソールからもログが出る

chen@juno ~/node-chat-demo $ node app
Express server listening on port 3000
GET / 200 222ms – 463
GET /stylesheets/style.css 200 233ms – 110
GET /javascripts/client.js 200 125ms – 568
GET /javascripts/jquery-1.8.0.js 200 230ms – 252.32kb
GET / 200 27ms – 463
GET /stylesheets/style.css 304 29ms
GET /javascripts/jquery-1.8.0.js 304 14ms
GET /javascripts/client.js 304 14ms

RaspberryPiにNode.js

Node.jsとは、JavaScriptの一種で、サーバーが構築できる言語。

「リアルタイムweb」とは、ほぼタイムラグなしにブラウザ上情報の更新を反映する、FacebookのメッセージやGoogleDocsなどの感じ。

Nodeには「ページに新しい情報が来たよ!」と教えてくれる機能があり、Socket.IOというパッケージにて実装できる。

間隔を開けてサーバにポーリングなどいらない分、サーバの負担が軽減てき、より多数のブラウザが接続できる。

環境構築

まず、Node.jsのバージョンを管理するためのマネージャをまずインストールする

chen@juno ~ $ curl -L git.io/nodebrew | perl – setup
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 –:–:– –:–:– –:–:–     0
  0     0    0     0    0     0      0      0 –:–:–  0:00:02 –:–:–     0
100 22630  100 22630    0     0   5045      0  0:00:04  0:00:04 –:–:– 14432
fetching nodebrew…
install nodebrew in $HOME/.nodebrew

========================================
Add path:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

chen@juno ~ $ vi .bashrc
chen@juno ~ $ source .bashrc

 

Node.jsのインストール

Node.jsをバイナリからインストール。参考サイトの言われたままに、Raspberry Pi向け(arm-pi)の最新版バイナリが用意されていないため、v0.10.28を使用。

chen@juno ~ $ nodebrew install-binary 0.10.28
fetch: http://nodejs.org/dist/v0.10.28/node-v0.10.28-linux-arm-pi.tar.gz
######################################################################## 100.0%
Install successful
chen@juno ~ $ nodebrew use 0.10.28
use v0.10.28
chen@juno ~ $ node -v
v0.10.28
chen@juno ~ $ npm -v
1.4.9
chen@juno ~ $

Hello Worldの表示

以下のコードをapp.jsというファイル名で保存して、Node.jsで実行してみよう。

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://192.168.0.207:1337/');

実行して見る:

chen@juno ~ $ node app.js

Server running at http://192.168.0.207:1337/

ブラウザから確認:

image