Socket.io 对象内的客户端

Socket.io client within an object

我正在使用 Node.js,使用 Socket.IO 与我服务器上的客户端通信...

例如:

在我的服务器上,我有一个Userclass,其中包含每个用户的基本信息和功能。每次有人连接时,都会创建一个新的 User 对象并将其添加到 users 数组,并向其解析 Socket.IO client 对象。这是代码:

// Set up server, Socket.IO, etc.

users = [];

var User = function(client) {
    this.value = "some random value";
    this.client = client;
    this.client.on("event",function(data) {
        // Do stuff with data
    });
}

socket.on("connection", function(client) {
    users.push(new User(client));
});

我的问题是:当接收到带有 Socket.IO .on() 的消息时,我想填充 client 所拥有的 User 对象。但问题是访问 this 不会访问 User 对象,而是访问 client 对象(或者至少我是这么认为的,但它不是 User 而是一些 Socket.IO 对象)。即使当我引用 .on() 函数来调用我的对象中的函数时,例如 User 对象中的 this.event,我仍然无法使用 [= 访问我的 User 对象19=]。我尝试在每个名为 self 的对象中创建一个局部变量,并将其设置为 this,如下所示:self = this;,但我无法编辑 this,但只能 self.

有什么想法吗?

this.client.on("event",function(data) {
  console.log(this.value === "some random value"); // true 
}.bind(this));
bind 使 this 关键字设置为提供的值,即用户对象。