节点JS:socket.io有多个子节点

时间:2014-04-28 22:41:52

标签: node.js sockets process

我正在使用Node JS开发一个服务器,在那里我创建了多个用chrome打开html的子项。

app.post('/exeVideo', function(req,res) {
    child = child_process.spawn('chromium-browser', ['RaspMediaVideos.html']);    
    child.on('exit', function() {            
        res.writeHead(200,"0K",{'Content-Type': 'text/plain'});
        res.end(); 
    });
});

此Html与服务器进行socket.io通信:

io.on("connection", function ( socket ){

    app.post('/playVideo', function(req,res) {
        socket.emit("playvideo");
        res.writeHead(200,"0K",{'Content-Type': 'text/plain'});
        res.end();          
    });

    app.post('/pauseVideo', function(req,res) {
        socket.emit("pausevideo");
        res.writeHead(200,"0K",{'Content-Type': 'text/plain'});
        res.end();      
    });

我的问题这里是如果我使用上面显示的代码创建2个childs_process,两个chrome窗口都执行得很好,但只有第一个执行socket.io事件(工作正常)。第二个不响应任何事件:S 如何让所有孩子捕获socket.io事件?

这是html处理事件的脚本:

var socket = io.connect('http://localhost:3434');

socket.on("pausevideo", function() {
    player.pause();
});

socket.on("playvideo", function() {
    player.play();
});

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

您在那些只发送到调用套接字的函数中调用socket.emit。尝试这样的事情。

app.post('/playVideo', function(req,res) {
    io.sockets.emit("playvideo");
    res.writeHead(200,"0K",{'Content-Type': 'text/plain'});
    res.end();          
});

app.post('/pauseVideo', function(req,res) {
    io.sockets.emit("pausevideo");
    res.writeHead(200,"0K",{'Content-Type': 'text/plain'});
    res.end();      
});


io.on("connection", function (socket) {
    // Handle Events
}