Рассмотрим следующий сценарий ...
- Участник подключается к каналу чата
- Участник отключается от канала чата
- Тот же участник пытается подключиться к тому же каналу чата
Моя проблема заключается в следующем ... Между шагами 2 и 3, когда участник пытается повторно подключиться к тому же каналу, я получаю сообщение об ошибке «Участник уже существует».Чтобы решить эту проблему, я попытался выполнить следующие шаги:
2.1 Вызовите channel.leave ()
2.2 channel.leave () успешно возвращает
2.3 Участник пытаетсяпереподключиться к тому же каналу чата
Участник успешно подключается к тому же каналу чата.
После успешного повторного подключения, когда участник пытается отправить сообщение, оно появляется дважды.Не рабочее решение.Вместо использования channel.leave (), также попытался использовать channel.removeMember (identity).После повторного подключения к тому же каналу снова, если участник отправляет сообщение, оно появляется дважды.Время для последнего вопроса, как мог / должен участник изящно подключаться и отключаться от канала чата, чтобы он мог продолжать разговор, как если бы этот участник никогда не покинул канал?
Спасибо!
Редактировать:
Шаг 1
const token = await axios.post('/twilio/chat',
{ identity: identity , room: channelName },
{ headers: header })
Шаг 2.
const client = await Chat.Client.create(token);
Шаг 3.
const channel = await client.getChannelByUniqueName(channelName)
Шаг 4.
const joinedChannel = await channel.join();
Шаг 5
const messages = await channel.getMessages()
messages.items.forEach((message) => {
//Consume unread messages...
})
channel.setAllMessagesConsumed()
Шаг 6. Прослушивание добавленных сообщений
channel.on('messageAdded', (message) => {
//When sending a message, this is where I get it duplicated after reconnecting to room
})
const previousChannel = await channel.leave()
Шаг 7. При выходе из канала ....
const previousChannel = await channel.leave()
После многих проб и ошибок я наконец пришел к следующему выводу.Чтобы «исправить» проблему, мне нужно обновить вкладку, а чтобы воссоздать ее, я выполняю вышеупомянутые шаги, не обновляя вкладку ... Утечка памяти?
Firefox 65.0.1
Хром 72.0.3626.53
ОБНОВЛЕНИЕ:
Исправлено.На шаге 7, после выхода из комнаты, клиент должен быть корректно выключен ...
client.shutdown()
Не очень дружелюбное решение, поскольку оно даже не задокументировано как необходимый шаг для выхода из комнаты.Наиболее вероятная причина - утечка памяти.Надеюсь, что эта ошибка может быть исправлена в ближайшее время ...