对象内的 Socket.io 客户端

Posted

技术标签:

【中文标题】对象内的 Socket.io 客户端【英文标题】:Socket.io client within an object 【发布时间】:2016-06-19 16:50:06 【问题描述】:

我正在使用 Node.js,通过 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() 接收消息时,我想要处理 client 所拥有的 User 对象。但问题是访问this 不会访问User 对象,而是client 对象(或者至少我认为是这样,但它不是User 而是一些Socket.IO 对象)。即使我引用.on() 函数来调用我的对象中的函数,例如User 对象中的this.event,我仍然无法使用this 访问我的User 对象。我尝试在每个名为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 关键字设置为提供的值,即用户对象。

【讨论】:

以上是关于对象内的 Socket.io 客户端的主要内容,如果未能解决你的问题,请参考以下文章

socket io v1 中房间内的客户端数量

使用socket io发送和获取数据的两条指令

如何更新房间内所有客户端的套接字对象? (socket.io)

通过Socket.io(Node.js)将对象发送到客户端

学习 Socket.io

socket.io简单总结