Node.js Socket.io с Redis – Как изменить только определенный ключ в объекте?Javascript

Форум по Javascript
Ответить
Гость
 Node.js Socket.io с Redis – Как изменить только определенный ключ в объекте?

Сообщение Гость »


Клиенты могут создавать лобби, которые сохраняются в Redis в формате объекта { . Затем клиенты присоединяются к лобби или покидают его, что потребует обновления только определенных ключей внутри объекта лобби.

В частности, здесь, когда клиент отключается, если он находится в лобби, сервер регистрирует информацию, get весь LOBBY_LIST, обновляя небольшая часть delete json[user.currentLobby].users[socket.id], затем set сохраняет весь LOBBY_LIST обратно в базу данных. Это кажется небрежным и неправильным и уже доставляет мне проблемы.

Как правильно реализовать такую ​​функцию?

socket.on( 'disconnect', async ( ) => { пытаться { console.log(`\x1b[33m[Worker${process.pid}]\x1b[0m ${user.id} отключен` ); if(!user.currentLobby) return; const LOBBY_LIST = ждут storeClient.get('LOBBY_LIST'); вар json = JSON.parse(LOBBY_LIST); если (json[user.currentLobby] == null) return; удалить json[user.currentLobby].users[socket.id]; if( Object.keys( json[user.currentLobby].users).length == 0) delete json[user.currentLobby]; storeClient.set('LOBBY_LIST', JSON.stringify(json)); сокет.emit('serverJoinLobby', 'успех'); } поймать( е ) { console.log(е); } }); Объект каждого лобби
const лобби = { имя: данные.имя, карта: данные.карта, тип: data.type, userMax: данные.userMax, пользователи: { }, // содержит сокет клиента комнаты.id хост: сокет.id };
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»