2013-10-10 33 views
7

node.jsでサーバーソケットのコンテキストを取得する方法を知りたい人は、誰でも手伝ってください。 httpヘッダーを使用してリクエストすると、サーバーポートを読み取ることができますが、ネットワーク経由で、そして要求がどのポート番号に来たかを示すソケットコンテキストのようなものが必要です。ここ複数のポートでnode.js httpサーバーを実行しています

は、サンプルコードである:

var http=require('http'); 
var url = require('url'); 
var ports = [7006, 7007, 7008, 7009]; 
var servers = []; 
var s; 
function reqHandler(req, res) { 
     var serPort=req.headers.host.split(":"); 
     console.log("PORT:"+serPort[1]);//here i get it using http header. 
} 
ports.forEach(function(port) { 
    s = http.createServer(reqHandler); 
    s.listen(port); 
    servers.push(s); 
}); 
+2

各HTTPサーバーは、一度に1つのポートだけを聴くことができます。また、これはExpressで簡単に行うことができます。 http://expressjs.com/api.html#app.listen – Brad

+0

ネットワーク/ソケットコンテキストとはどういう意味ですか?サーバー上で要求を取得することなく。 – user568109

+0

ソケットコンテキストとは、特定のlistenソケット上の接続オブジェクト全体を意味します。私は、上記のいずれの要求がサーバに来たのかを知りたかっただけです。 –

答えて

5

reqオブジェクトは、基礎となるノードのソケットへの参照を有します。 http://nodejs.org/api/http.html#http_message_sockethttp://nodejs.org/api/net.html#net_socket_remoteaddress

ここでは、ローカルとリモートのソケットアドレス情報を表示するように変更されたサンプルコードを示します。

var http=require('http'); 
var ports = [7006, 7007, 7008, 7009]; 
var servers = []; 
var s; 
function reqHandler(req, res) { 
    console.log({ 
     remoteAddress: req.socket.remoteAddress, 
     remotePort: req.socket.remotePort, 
     localAddress: req.socket.localAddress, 
     localPort: req.socket.localPort, 
    }); 
} 
ports.forEach(function(port) { 
    s = http.createServer(reqHandler); 
    s.listen(port); 
    servers.push(s); 
}); 
関連する問題