我正在搞乱Node 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 :(得分:0)
确实,您可以删除Sender
及其所有引用。
process.openStdin().addListener("data", function (text) {
io.sockets.emit('news', text.toString())
});
这将向所有连接的客户端发送消息。
http://socket.io/上有一些例子,我建议您查看它们。