2013-10-10 2 views
7

Lütfen, sunucu soket bağlamını nasıl alacağımı öğrenmek için lütfen bana yardım edin. http başlıklarını kullanarak istekte bulunursam sunucu bağlantı noktasını okuyabilirim ancak ağ üzerinden ve bağlantı noktası numarası gibi istekte bulunulduğunu belirten soket bağlamında olmasını istiyorum.node.js http sunucusu birden çok bağlantı noktasında çalışıyor

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

Her bir HTTP sunucusu her seferinde yalnızca bir bağlantı noktasını dinleyebilir. Ayrıca, bu Express ile yapmak çok kolay. http://expressjs.com/api.html#app.listen – Brad

+0

Ağ/soket bağlamıyla ne demek istiyorsunuz? sunucuda istek almadan. – user568109

+0

soket bağlamında, belirli bir dinleme soketindeki tüm bağlantı nesnesi anlamındadır. Sadece yukarıdaki bağlantı noktalarının hangisinin kesildiğini öğrenmek istedim. –

cevap

5

req amacı, altta yatan düğüm yuva referansı var Burada

örnek kod. Bu bilgileri aşağıdaki gibi belgelendirildiği şekilde kolayca alabilirsiniz: http://nodejs.org/api/net.html#net_socket_remoteaddress

Yerel ve uzak soket adres bilgilerini göstermek için örnek kodunuz burada değiştirilmiştir.

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); 
});