如何正确封装套接字.输入输出插座
How do I properly encapsulate a socket.io socket?
这段代码在我的node.js服务器应用程序中运行:
io.sockets.on('connection', function (socket) {
var c = new Client(socket, Tools.GenerateID());
waitingClients.push(c);
allClients.push(c);
if (waitingClients.length === 2)
{
activeGames.push(new Game([waitingClients.pop(), waitingClients.pop()]));
}
});
function Client(socket, id)
{
this.Socket = socket;
this.ID = id;
this.Player = new Player();
this.Update = function(supply)
{
socket.emit('update', { Actions: this.Player.Actions, Buys: this.Player.Buys, Coins: this.Player.Coins, Hand: this.Player.Hand, Phase: this.Player.Phase, Supply: supply});
}
socket.on('play', function(data) {
console.log(data);
console.log(this.Player);
});
socket.emit('id', id);
}
我遇到麻烦的部分是'play'事件的事件处理程序。console.log(this.Player)
输出undefined
。我有点理解为什么它是错误的,因为"this"指的是我的客户端对象(套接字?匿名函数?),但我不知道如何重新安排代码来正确处理'play'事件,并完全访问客户端对象的成员。
您只需要将this
存储在Client
中的其他变量中。
function Client(socket, id)
{
var self = this;
...
socket.on('play', function(data) {
self.Player.play();
});
相关文章:
- 节点.js加密输入/输出类型
- 在javascript中测量websockets数据输入/输出的大小
- 整数 + 2x 单选按钮设置输入 --> 输出
- 使用输入/输出事件在 Angular 2 中的父组件中触发方法
- 泽西休息服务的 JSON 输入/输出在 JavaScript 中不可用
- jQuery在悬停输入/输出时作为进度条
- 如何将数字转换为货币,反之亦然?(html输入/输出)
- 莫名其妙的页面刷新在套接字后被触发.输入输出消息
- 我的幻灯片输入/输出动画不能在jQuery中工作
- 添加多个输入/输出目录
- node . js插座.输入输出插座.广播未定义
- 如何更改'旧套接字中已弃用的set()和get()输入输出的代码
- 如何设置传入套接字的最大大小限制.输入输出消息
- 如何正确封装套接字.输入输出插座
- HTML输入输出
- dojo的冲突.require和Socket.输入输出端
- 聚合物:阻止儿童切换鼠标输入/输出事件
- 移动应用输入/输出
- 角+套接字.输入输出处理程序
- 需要建议登录、用户数据输入/输出的PHP实现设计