2
我喜欢node.js和socket.io,因为它们强大而美丽,但是很少有问题阻止了我的发展。这可能是因为我没有足够的练习node.js JavaScript。如何正确使用socket.io和oop
问题: 有一个代码:
var express = require('express');
var sio = require('socket.io');
var X = require('./js/x.js');
var Y = require('./js/Y.js');
var app = express.createServer();
var ws = sio.listen(app);
var users = [];
app.use(express.static(__dirname + '/public'));
ws.sockets.on('connection', function(socket) {
users.push(new X(socket));
if (users.length === 2) {
var z = new Y(users.shift(), users.shift());
z.listen();
}
});
app.listen(9000);
这里是X和Y:
module.exports = function X(socket) {
this.socket = socket;
this.name = '';
X.prototype.setName = function(name) {
this.name = name;
};
};
module.exports = function Y(a, b) {
this.a1 = a;
this.a2 = b;
this.variable1 = 777;
Y.prototype.listen = function() {
this.a1.socket.on('text', function(msg) {
console.log('a1: ' + msg);
// AND HERE IS MY ISSUE:
// I want to access a2 by 'this' but 'this' doesn't point on 'class' Y
this.a2.socket.emit('text', 'a1: ' + msg);
// Also i want to change value of variable, something like that:
this.a1.setName(msg);
// AND:
this.variable1--;
});
};
我的问题是:如何和我在做什么错。我是PHP开发人员,我意识到我思想上的差异。提前致谢!