Я хочу использовать метод из класса в качестве обратного вызова socketio.Вызываемый метод должен по-прежнему иметь «this», связанный с сокетом, а также «this» для переменных класса.
В конечном счете, так я могу использовать this.id для идентификатора сокета,а также используя io для передачи на все подключенные сокеты.Я прошел через тонну подобных вопросов, но не смог найти ясного (для меня) решения.
/index.js
const test = require('./modules/testClass.js');
test.init("some string");
io.on('connection', function(socket) {
socket.on('login', test.saySomething)
})
/testClass.js
class Test {
init(someString) {
this.theString = someString;
}
saySomething() {
console.log(this.theString);
}
}
module.exports = new Test();
В этом простом примере он должен вывести «некоторую строку», но также иметь возможность доступа к идентификатору сокета.,Спасибо!
Обновление: я смог сделать это следующим образом:
io.on('connection', function(socket) {
socket.on('login', (username) => tables.testit(socket, username))
})
testit(socket, username) {
console.log(socket.id + " " + username);
}
Это не очень красиво, это все еще хорошая практика?