我试图学习Socket.io,我是NodeJS的初学者。
我使用JSON
对象作为一种键值存储,用于映射具有相关事件名称的回调函数。可能还有其他一些替代方法可以有效地做到这一点,我不知道。问题在于下面的代码,当我调用bob.printName()
时,它会完美地打印JSON
对象。但是当我使用callbacks['connection']()
调用相同的函数时,它表示JSON
对象未定义。我想知道其中的原因,并且也喜欢知道任何其他有效的替代方案,如PHP,如数组索引。
/***
** index.js
***/
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var User = require('./User');
var bob = new User();
var callbacks = {
'connection': bob.printName
};
io.on('connection', function(socket){
bob.printName();
callbacks['connection']();
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
/***
** User.js
***/
var jsonObj = null;
function User() {
this.jsonObj = {
type: 'type',
body: 'body'
};
}
User.prototype.printName = function(){
console.log(this.jsonObj);
}
module.exports = User;