Добрый день.
Пытаюсь разделить логику сервер Websocket, чтобы все события не были в одном файле.
Нашёл вот такой пример:
const io = require('socket.io')(server)
var Shops = require('./EventHandlers/handShops')
var app = {
allSockets: []
}
io.on('connection', socket => {
var eventHandlers = {
shops: new Shops(app, socket),
}
for (var category in eventHandlers) {
var handler = eventHandlers[category].handler;
for (var event in handler) {
socket.on(event, handler[event])
}
}
app.allSockets.push(socket)
});
И в файле handShops.js:
var Shops = function (app, socket) {
this.app = app,
this.socket = socket,
this.handler = {
synchShopStatus: synchShopStatus.bind(this),
ping: ping.bind(this)
}
function ping() {
this.socket.emit('message', 'PONG!')
}
function synchShopStatus(text) {
this.app.allSockets.emit('synchShopStatus', text);
}
}
module.exports = Shops
Но он выдаёт ошибку: this.app.allSockets.emit is not a function
И не могу разобраться почему.
Или есть более лучший способ разделить события по файлам?