2011年8月24日水曜日

maptailを動かしてみる

環境が揃ってきたいので、手始めにmaptailを動かしてみます

$npm install maptail

でインストールは終わりです。

使い方は、access_logのpathとexpressのbindの設定を引数で与えるだけです

apacheのaccresslogをchmodとかchownするのもあれなので、一旦rootでテストしてみます

$sudo su - 
#export PATH=/home/shin/local/node/bin:$PATH
#export  NODE_PATH=/home/shin/local/node:/home/shin/local/node/lib/node_modules
#cd /home/shin/dev/node_modules/maptail/
#node ./maptail.js /var/log/apache2/access.log luckyxrea.bf1.jp 5124


 これで、
http://luckyxrea.bf1.jp:5124/map
にchromeでアクセスすると見たかった画面を見ることができます。


まずは、サンプルが動いたので次にコード検証をしていきます。


26-34行目で、express...って書いてある。何となくこいつがweb frameworkっぽい初期化コードになっている。
// configuration
var app = express.createServer()
app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.logger());
  app.use(express.methodOverride());
  app.use(express.bodyParser());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

viewの定義が気になったので
 #cat views/map.jade

link(rel='stylesheet', href='/css/wargames.css')
script(src='https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js')
script(src='/js/config.js')
script(src='http://' + wshost + ':' + wsport + '/socket.io/socket.io.js')
script(src='/js/raphael.js')
script(src='/js/map.js')
script(src='/js/client.js')
|
|
| had activity 0.00 sec ago
|
| messages in the last 40min
|
|
|
    |
    となっている。なるほど。
    ふんわりexpressについての意義は分かったので、maptailを掘り下げてみる

     74 // start Server
     75 app.listen(port, host);
    引数のportとhostでbindしている


     77 // socket.io 
     79 var wsserver = http.createServer() 
     80 wsserver.listen(wsport, wshost);
    Websocketのサーバもbindしておくのね
     18   var wsport = process.env.WSPORT || + port + 111
     19   var wshost = process.env.WSHOST || host
     この辺のportも使ってるのか。
    #netstal -l 
    tcp        0      0 localhost:5235          *:*                     LISTEN     
    tcp        0      0 localhost:ipp           *:*                     LISTEN     
    tcp        0      0 localhost:postgresql    *:*                     LISTEN     
    tcp        0      0 localhost:smtp          *:*                     LISTEN     
    tcp        0      0 localhost:5124          *:*                     LISTEN     

    たしかに、port5124と+111の5235が使われていますね
    コードの続きを読むと
     81 var socket = io.listen(wsserver)
     83 socket.on('connection', function(client) {
     84   var id = client.sessionId
     85     , ip = client && client.request && client.request.socket && client.request.socket.remoteAddress || '000'
     86 
     87   connected[id] = client
     88 
     89   world.sendStartupData(client)
     90 
     91   client.on('disconnect', function() {
     92     delete connected[id]
     93   })
     94 })
    なるほど。worldの中身はgeoip判定がメインな感じなので大枠この辺までが重要な感じです。


    0 件のコメント:

    コメントを投稿