我正在使用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();
});
感谢您的时间。
答案 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
}