gpt4 book ai didi

node.js - 导出socket.io时无法读取未定义的属性 'socket'

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:33 24 4
gpt4 key购买 nike

我正在尝试模块化我的应用程序,并希望在不同的 js 文件上向客户端发出不同的事件。下面的示例代码显示将从 led.js 触发事件“onlinestatus”。但是,每当我尝试从 led.js 发出事件时,我都会不断收到消息“类型错误:无法读取未定义的属性“套接字””。我怀疑当我尝试从/bin/www 导出 io 时可能出现问题。

/bin/www

var server = http.createServer(app);
var io = require('socket.io').listen(server);

var connectedClientsNum = 0;

io.sockets.on('connection', function(socket) {

console.log("client connected!");

socket.on('disconnect', function() {
console.log("Client disconnected...");
console.log("Total Clients Connected: " + --connectedClientsNum);
})

});
...
module.exports = server;
module.exports.io = io;

led.js

var io = require('../bin/www').io;
...
function toggleLed(leds, err, callback) {
/* toggle the led value */
if (leds[0].value == 0) {
leds[0].value = 1;
leds[0].save(function(err) {
if (err) {
err("update led error");
}
else {
var person= {"status": "online"};
io.sockets.emit('onlinestatus', person);

callback("update led from 0 to 1 success");
}
});
}

else {
leds[0].value = 0;
leds[0].save(function(err) {
if (err) {
err("update led error");
}
else {
var person= {"status": "offline"};
io.sockets.emit('onlinestatus', person);
callback("update led from 1 to 0 success");
}
});
}
}

最佳答案

您应该检查socket.io 上的文档,并检查socket.io 框架中是否仍然存在socket.sockets.on() 函数。我不确定它是否还在那里。如果您必须让它工作,您可以尝试将 socket.io 的版本更改为 0.9,我认为这将是可行的。

关于node.js - 导出socket.io时无法读取未定义的属性 'socket',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29875470/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com