节点JS& socket.io - 发送消息基础知识

时间:2012-02-12 11:42:12

标签: javascript sockets node.js

我正在搞乱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);
});

1 个答案:

答案 0 :(得分:0)

确实,您可以删除Sender及其所有引用。

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

这将向所有连接的客户端发送消息。

http://socket.io/上有一些例子,我建议您查看它们。