JavaScript类变量范围混淆(socket.io 事件)
javascript class variable scope confusion (socket.io events)
我正在使用带有快速和 socket.io 的节点来创建游戏服务器。我把游戏服务器放在一个额外的模块中。
我遇到无法访问io事件中的游戏服务器对象的问题。如何解决此问题,还是应该以不同的方式构建我的项目?
// gameServer.js
'use strict'
var io = require('socket.io');
var socketioJwt = require('socketio-jwt');
var config = require('../config.js');
class GameServer {
constructor(http) {
this.io = new io(http);
this.connectedUsers = [];
this.initSocket();
}
initSocket() {
console.log('users', this.connectedUsers);
this.io.on('connection', this.onConnection);
}
onConnection(socket) {
console.log('users', this.connectedUsers); // undefined
}
}
我像这样初始化服务器:
'use strict'
var express = require('express');
var app = express();
var http = require('http').Server(app);
// init game server
var gameServerApp = new GameServer(http);
http.listen(3000, function() {
console.log('listening on *:3000');
});
我认为这是一个常见问题,但我不知道如何解决它。
你可以bind
this
this.onConnection
initSocket() {
console.log('users', this.connectedUsers);
this.io.on('connection', this.onConnection.bind(this));
}
相关文章:
- 如何使用Socket.io将命令从客户端发送到服务器
- Socket.IO未定义变量
- Socket.io on Mozilla Rhino
- socket.io发射三次
- AngularJS$q承诺使用socket.io
- 如何知道使用socket.io订阅/取消订阅频道
- 通过socket.io发射给特定的人
- 通过socket.io从浏览器流式传输视频
- 通过node.js和socket.io向特定用户发送数据
- 如何使用socket.io在meanjs项目中配置jshint
- 如何使用Socket.io和Node.js开发大型聊天应用程序
- RangeError nodejs socket.io
- 通过node.js和socket.io在两个用户之间发送消息
- 使用socket.io更新express实时视图
- socket.io cookie解析握手错误
- 如何在同一端口上使用ExpressJS和Socket.io
- 使用cordova快速nodejs socket.io
- 通过socket.io与heroku应用程序进行通信
- Socket.io客户端在使用名称空间时忽略端口[Bug?]
- Node.js-socket.io-对io.sockets的引用突然未定义