2012-02-12 31 views
0

我搞砸了節點JS和socket.io,我有點失落。在下面的代碼中,我在創建時保存對套接字的引用,然後傳輸從控制檯捕獲的消息。一切運作良好,但我覺得這不是正確的做法。節點JS和socket.io - 發送消息基礎

您的想法?

var app = require('http').createServer(handler) 
    , io = require('socket.io').listen(app) 
    , fs = require('fs'); 

app.listen(80); 

function handler(req, res) { 
    fs.readFile('C:/node/index.html', 
     function (err, data) { 
      if (err) { 
       res.writeHead(500); 
       return res.end('Error loading index.html'); 
      } 

      res.writeHead(200); 
      res.end(data); 
     }); 
} 

var Sender = { 
    sockets:[], 
    sendMsg:function (msg) { 
     for (var i = 0; i < Sender.sockets.length; i++) { 
      Sender.sockets[i].emit('news', msg); 
     } 
    } 
}; 


process.openStdin().addListener("data", function (text) { 
    Sender.sendMsg(text.toString()); 
}); 

io.sockets.on('connection', function (socket) { 
    //Saving reference 
    Sender.sockets.push(socket); 
}); 

回答

0

事實上,你可以刪除你的Sender和對它的所有引用。

process.openStdin().addListener("data", function (text) { 
    io.sockets.emit('news', text.toString()) 
}); 

這會將消息發送給所有連接的客戶端。

http://socket.io/有幾個例子,我建議你檢查一下。

+0

感謝您的意見,我會檢查出來;-) – 2012-02-12 12:57:55