2013-08-31 21 views
0

看下面的例子:Nodejs訪問netserver從外部寫入?

var net = require('net'); 
var server = net.createServer(function(c) { //'connection' listener 
    console.log('server connected'); 
    c.on('end', function() { 
    console.log('server disconnected'); 
    }); 
    c.write('hello\r\n'); 
    c.pipe(c); 
}); 
server.listen(8124, function() { //'listening' listener 
    console.log('server bound'); 
}); 

我想有一個辦法從createServer()功能

基本上外部訪問c.write我想做的事是這樣的:

app.get('/msg/:theMsg', function (req, res) { 
    res.setHeader('Content-Type', 'application/json'); 

server.c.write(req.params.theMsg, socketName); // i got socketName stored in an array 

}); 
+0

有什麼好寫,如果沒有建立連接? – hexacyanide

+0

我的服務器的邏輯要求我能夠檢查連接X是否處於活動狀態,然後將c.write發送給它 – Alosyius

回答

1

沿着這個東西線,但是你將不得不做更多的檢查,看看插座是活着還是沒有等

var net = require('net'); 
var sockets = {}; 
var server = net.createServer(function(c) { //'connection' listener 
    var name = generate_name_from_con(c); 
    console.log('server connected'); 
    sockets[name] = c; 
    c.on('end', function() { 
     delete sockets[n]; 
     console.log('server disconnected'); 
    }); 
    c.write('hello\r\n'); 
    c.pipe(c); 
}); 
server.listen(8124, function() { //'listening' listener 
    console.log('server bound'); 
}); 

app.get('/msg/:theMsg', function (req, res) { 
    res.setHeader('Content-Type', 'application/json'); 

    if(socketName in sockets) sockets[socketName].write(req.params.theMsg); 

}); 
0

只需將c對象作爲參數傳遞給另一個函數:

var net = require('net'); 
var server = net.createServer(function(c) { //'connection' listener 
    console.log('server connected'); 
    c.on('end', function() { 
     console.log('server disconnected'); 
    }); 
    writestuff(c); 
    c.pipe(c); 
}); 
server.listen(8124, function() { //'listening' listener 
    console.log('server bound'); 
}); 
function writestuff(c) { 
    c.write('eueueueue'); 
} 
+0

我該如何做另一種方式?看看我上面的app.get例子,那不包含c參數 – Alosyius

+0

'app'來自哪裏?不知何故與'server'有關? –

+0

當服務器收到一個獲取請求時,它會觸發它在網絡服務器範圍之外的應用 – Alosyius