У меня возникла проблема при работе с socket.io. У меня настроена функция, при которой при подключении пользовательские данные обновляются, только кажется, что это происходит только ПОСЛЕ первоначального подключения.
Когда подключается один пользователь, новый пользователь ничего не обновляет. Дополнительный новый пользователь подключается, старое подключение обновляется, но новое подключение остается без изменений.
Не могу ли я отправить данные во время соединения?
Для меня это всего лишь простая практика - попытаться поправиться с помощью веб-сокетов, и, похоже, я не могу пройти мимо общего broadcast.emit.
Я пробовал socket.to (socket.id) .broadcast.emit, конечно, но и там не повезло. Вы увидите в моем коде.
// Setup socket.io
socketIo.on('connection', socket => {
getDataByUser(user, socket)
socket.on('disconnect', function() {
delete CLIENTS[socket.id];
console.log(`${username} disconnected`)
});
function getDataByUser(user, socket) {
var items = [1,2,3];
items.forEach(element => {
socket.broadcast.emit('server:data', element)
socket.broadcast.to(socket.id).emit('data', 'for your eyes only');
});
}
Как вы можете видеть в функции getData, для проверки я использую как общий emit, так и emit to. У меня настроены правильные слушатели, однако сам сокет обновляется только при новом подключении. Возможно, это вызывается только тогда, когда сокет a устанавливает новое соединение?
Я бы хотел, чтобы эта функция вызывалась сразу после подключения к сокету. только для пользователя, который подключился. Любая помощь будет принята с благодарностью.