2012-03-21 42 views
2

Simple代碼:如何僅使用網絡模塊要發送消息給各個客戶端中的node.js(未socket.io)

process.stdin.resume() 
process.stdin.setEncoding('utf8'); 
var server = createServer(); 
server.listen(9999); 
server.on('connection',function(sock){ 
    console.log('CONNECTED:'+sock.remoteAddress+":"+sock.remotePort); 
    process.stdin.on('data',function(send){ 
      sock.write(send); 
    }); 
} 
  • 當接收到來自10.10.10.1和10.10.10.2連接, 消息 「連接:10.10.10.1:XXX」 和 「連接:10.10.10.2:XXX」 是在端子

  • 要發送消息到客戶端,我用sock.write(發送).. 但顯示,所有客戶收到消息

  • 如何將消息發送給特定的客戶端。 從谷歌搜索有很多socket.io相關文件(解決方案).. 但在使用socket.io之前,我想知道node.js本身。 (或JavaScript本身?)

  • 閱讀瓦迪姆的評論之後,我寫了向下跌破更多的代碼。 完整的工作代碼。

  • 我增加了兩件事。據瓦迪姆的評論,加上物業sock.id 和使用屬性sock.remoteAddress,發送服務器的標準輸入消息
    10.10.10.1客戶端只

var net = require('net') process.stdin.resume() process.stdin.setEncoding('utf8'); var server = net.createServer(); server.listen(9999); server.on('connection',function(sock){ sock.write('input your ID: ',function(){ var setsockid = function(data){ id=data.toString().replace('\r\n',''); console.log('ID:'+id+' added!!') sock.id=id sock.removeListener('data',setsockid); }; sock.on('data',setsockid); sock.on('data',function(data){ d=data.toString().replace('\r\n',''); console.log(sock.id+' say: '+d); }); }); console.log('CONNECTED:'+sock.remoteAddress+":"+sock.remotePort); process.stdin.on('data',function(send){ if (sock.remoteAddress=='10.10.10.1') sock.write(send); }); });
+0

感謝像你上面的編輯...編寫一行代碼是有點困難的我,因爲這是我的第一篇 – ryuken73 2012-03-22 00:57:52

回答

3

回答你的問題是Node.JS main page

var net = require('net'); 

var server = net.createServer(function (socket) { 
    socket.write('Echo server\r\n'); 
    socket.pipe(socket); 
}); 

server.listen(1337, '127.0.0.1'); 
+0

感謝!我知道「sock.pipe(套接字)」將套接字管道輸出到套接字的輸入流中,並且使用它,服務器只能將來自特定客戶端的數據發送到該客戶端。但我想知道的是這個...有沒有什麼辦法發送一條消息(例如服務器的標準輸入)到一個特定的客戶端(在我的例子中,只有10.10.10.1客戶端)。 – ryuken73 2012-03-22 01:18:05

+0

在此示例中,socket.write僅發送到特定連接。即使你從一個地址socket.write創建了許多連接,它只會將數據發送到一個連接。您需要額外的身份驗證客戶端,因爲IP地址不能識別客戶端。 – 2012-03-22 02:06:31

+0

謝謝Vadim。客戶需要被認證。那就對了。服務器需要客戶端的標識。我寫了更多的代碼。在評論框中編寫代碼太困難了,所以請看原始問題。 – ryuken73 2012-03-22 07:02:40

相關問題