Есть простенький сервер чата который отлично работает
var express = require('express');
var socket = require('socket.io');
var app = express();
server = app.listen(5000,console.log('server is running on port 3000'));
io = socket(server);
io.on('connection', (socket) => {
let currentRoom = 'data'
socket.join(currentRoom )
// прослушивание события отправки сообщения
socket.on('MESSAGE', function(data){
//подключение к комнате(ее ид приходит вместе с сообщением )
socket.join(data.room)
//отправка сообщения
io.to(data.room).emit('RECEIVE_MESSAGE', data);
})
});
Но вместо подключения и отправки сообщений в одном листнере, хочу подключаться по отдельному прослушиванию
// в newRoom передаю id комнаты
socket.on('move to room', function (newRoom) {
socket.leave(currentRoom)
socket.join(newRoom)
currentRoom = newRoom
})
но вместо того, чтобы подключаться к id комнаты переданной в newRoom, это хрень id подключение берет из id своего обьекта (this.id)
Как это можно починить или как id одной функции-листнера передать в другую???????????
это для того, чтобы потом передать их в нужные листнеры? пробовал но тогда возникает ситуация с замыканиями, один раз метод join из " socket.on('MESSAGE', " найдет эту переменную, а потом хранит ее в ф-ции socket.on()
А каким бы способом вы рекомендовали вынести переменные?
Возможно мне не стоит заморачиваться и занести ее сразу в localStorege?