2013年3月28日 星期四

15 Lines NodeJS File Server...

Node.js來初始化HTTP協定是相當簡單的事情
下面展示一個簡單的http server範例
可以把執行路徑下的任何檔案當做http資源來瀏覽

    
var fs = require('fs')
  , http = require('http');
http.createServer(function (req, res) {   var path = req.url;
  try{
    var f = fs.readFileSync('.' + path);
    console.log(f);
    console.log(f);
    res.end(f.toString());   } catch(e) {
    console.log(e);
    res.end('');
  }
  }
}).listen(1337); console.log('Server running at http://127.0.0.1:1337/');
目前作者已經包裝成NPM套件
可以透過下面方式安裝與使用(以下擷取自:https://github.com/peihsinsu/noder)

Noder - Simple HTTP Server 

Install

Install using npm...
    # npm install noder -g  

Usage

    # noder  Server running at http://127.0.0.1:1337/  

View

Browser View http://127.0.0.1:1337/test.html (Assump that the test.html exist in the current folder)
    <Buffer 23 21 2f 62 69 6e 2f 62 61 73 68 0a 63 64 20 2f 6f 70 74 0a 23 77 67 65 74 20 68 74 74 70 3a 2f 2f 6e 6f 64 65 6a 73 2e 6f 72 67 2f 64 69 73 74 2f 76 30 ...>  { [Error: ENOENT, no such file or directory './favicon.ico']    errno: 34,    code: 'ENOENT',    path: './favicon.ico',    syscall: 'open' }  <Buffer 1f 8b 08 00 ed 18 e5 50 00 03 ec 3d 6b 77 db 36 b2 f9 5a fd 0a 44 67 cf 4a 4a 25 ea 2d 77 ed 3a 8d 9b b8 4d 77 f3 ba b1 fb b8 27 37 c7 a2 48 c8 62 4c 91 ...>

2013年3月21日 星期四

透過node.js取得request上有用的資訊

身在網路的世界打滾∼有些事情不得不知道...
在node.js中,他把request做了某個程度的wrapper
我們可以透過下面的方法取得一些常用的連線參數
  • 取得server side full url:
    req.url
  • 取得request client的IP位置:
    req.connection.remoteAddress
  • 取得referer page(從哪個網址連線進入)
    req.headers['referer']
  • 取得user agent information:
    req.headers['user-agent']
實際上程式碼可以向這樣:


http.createServer(function (req, res) {
   console.log(req.connection);
   var result = 'req.url:' + req.url + '\r\n';
   result += 'req.connection.remoteAddres:' + req.connection.remoteAddress + '\r\n';
   if(req.headers) {
       result += 'req.headers[\'referer\']:'+ req.headers['referer'] + '\r\n';
       result += 'req.headers[\'user-agent\']:' + req.headers['user-agent'] + '\r\n';
   }
   res.end(result);
}).listen(port, server);


大家可以參考看看∼