2016-03-06 2 views
0

Я использую Node.js с Socket.io для связи с клиентом на моем сервере ...Socket.io клиента в пределах объекта

Например:

На моем сервере, у меня есть User класс, который содержит основную информацию и функции о каждом пользователе. Каждый раз, когда кто-то подключается, новый объект 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(), я хочу сделать Наполните User объект, который client находится в собственности. Но проблема в том, что доступ к this не имеет доступа к объекту User, а скорее к объекту client (или, по крайней мере, я так думаю, но это не User, а скорее некоторый объект Socket.IO). Даже когда я ссылаюсь на функцию .on(), чтобы вызвать функцию в моем объекте, например this.event, в моем User объекте, я до сих пор не могу получить доступ к моему объекту User с this. Я попытался создать локальную переменную в каждом объекте с именем self и установить ее на this, например: self = this;, но я не могу редактировать this, но только self.

Любые идеи?

ответ

1

this.client.on("event",function(data) { 
 
    console.log(this.value === "some random value"); // true 
 
}.bind(this));
bind делает this набора ключевых слов по указанному значению т.е. объекта пользователя.

Смежные вопросы