我正在尝试设置一些socket.io通信,我的服务器(app.js)(在raspberry pi上运行)和网站(public / index.html)之间的通信正常。现在我想扩展它,所以当我的app.js收到来自index.html的调用时,它会将它进一步发送到另一个node.js脚本(bed.js),它将在另一个raspberry pi上运行。我试图使用npm模块socket.io-client,但这只能接收
!编辑!问题已缩小到setrgb部分,它不会发出。
!编辑2!当我收到setRGB时,我发出setRGBclient,但是只能在bed.js中收到,而不是在index.html中,有我的问题,我需要共享连接或强制它到另一个连接,不知道我是如何修复它的虽然
APP.JS:
let http = require('http').createServer(handler); //require http server, and create server with function handler()
let fs = require('fs'); //require filesystem module
let io = require('socket.io')(http) //require socket.io module and pass the http object (server)
let delay = require('delay');
console.log('Define each color from RGB Strip light.');
http.listen(8080); //listen to port 8080
function handler (req, res) { //create server
fs.readFile(__dirname + '/public/index.html', function(err, data) { //read file index.html in public folder
if (err) {
res.writeHead(404, {'Content-Type': 'text/html'}); //display 404 on error
return res.end("404 Not Found");
}
res.writeHead(200, {'Content-Type': 'text/html'}); //write HTML
res.write(data); //write data from index.html
return res.end();
});
}
io.sockets.on('connection', function (socket) {// WebSocket Connection
socket.on("test", function(){
console.log("sampletext");
});
socket.on("setRGB", function(data){
socket.emit("setRGBClient", data);
console.log(data);
console.log("test");
});
});
bed.js:
let socket = require('socket.io-client')('http://localhost:8080');
let lightstate = false;
let stayOff = false;
let fadeState = false;
console.log("check");
socket.emit("test");
socket.on("setRGBClient" ,function(data) {
console.log(data);
});
答案 0 :(得分:2)
我可以播放setRGBClient。
socket.broadcast.emit("setRGBClient", data);
答案 1 :(得分:0)
我想这是一次学习练习。否则我会对socket.io警告这些应用程序。
但是我只能看到'setRGB'的订阅而不是emit-part。
答案 2 :(得分:0)
就这个“当我收到setRGB时,我发出setRGBclient,但只能在bed.js中收到,而不是在index.html中,这就产生了我的问题,我需要共享连接或强制它到另一个连接,不知道我如何修复它虽然“关注然后,我建议尝试在index.html和bed.js 共享相同的套接字,或者通过在index.html中创建一个套接字并传入它bed.js通过一些函数或在bed.js中创建一个套接字通过索引中的函数返回它,然后在两个文件中的监听器上返回它。因为同一个套接字上发送的数据需要在两个文件中被监听。 我在为我工作的mocha脚本时尝试过这个。