Отображать старые данные с помощью Socket.io в определенной комнате - PullRequest
0 голосов
/ 01 февраля 2020

Я создал комнату в своем приложении. Когда новый пользователь присоединяется, как я могу отобразить ему старый контент, который был отправлен. Взятие массива не работает, потому что он работает глобально (для всех комнат), и когда я объявляю массив внутри функции соединения, данные не отображаются.

1 Ответ

0 голосов
/ 01 февраля 2020

Возможно, вы можете изменить свое решение, которое «работает глобально», чтобы оно работало для каждой комнаты.

Я думаю, вы сделали что-то вроде этого:

// At the beginning:
const messages = [];

// When a user joins,
// you send the 'messages' history

// When a user sends a message:
const newMessage = {username: 'Stratubas', body: 'Hello!', timestamp: Date.now()};
messages.push(newMessage);

, чтобы вы могли изменить его примерно так:

// At the beginning:
const messagesPerRoom = {};

// When a user joins a room:
const roomId = 'the_url_parameter_value';
if (messagesPerRoom[roomId] === undefined) {
  messagesPerRoom[roomId] = [];
}
// and send the 'messagesPerRoom[roomId]' history

// When a user sends a message:
const newMessage = {username: 'Stratubas', body: 'Hello!', timestamp: Date.now()};
messagesPerRoom[roomId].push(newMessage);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...