Недавно я реализовал Pusher ChatKit в своем проекте Vue.
Я перебрал документацию js , но я запутался в процессе инициализации приложения, поэтомуу меня есть активные слушатели новых сообщений.
У меня есть 5 комнат, частью которых является currentUser
.
Когда я делаю
chatManager
.connect()
.then(currentUser => {
})
, я получаю текущего пользователя и могу получить доступ к его rooms
и roomSubscriptions
.
1) В чем разница?Любая комната, частью которой является пользователь, также должна быть той, на которую он подписан, нет?
В документации сказано, что мне нужно подписаться на каждую из пользовательских комнат, чтобы установить хук onNewMessage()
.
Итак, я сделал это так:
chatManager
.connect()
.then(currentUser => {
this.initiateNewChatState(currentUser)
})
initiateNewChatState(currentUser){
for(let room of currentUser.rooms){
currentUser.subscribeToRoom({
roomId: room.id,
hooks: {
onNewMessage: message => {
console.log(`Received new message ${message.text}`)
this.$store.commit('CHATKIT_message', message)
}
},
messageLimit: 10
})
}
}
2) Но теперь, когда я получаю новое сообщение только для одной комнаты, ловушка срабатывает для каждой комнаты (5 раз).
Теперь, когда я сделал цикл подписки, мне не нужно делать это при следующем запуске chatManager.connect()
, потому что currentUser.roomSubscriptions
уже заполнен комнатами, которые я подписал в последний раз, еще до this.initiateNewChatState()
.
3) Возникает вопрос: каков правильный порядок подписки на пользовательские комнаты, частью которых пользователь уже является, и как обнаруживать новые сообщения и новые создания комнат (когда кто-то начинаетпообщаться с вами)?
Документация действительно упрощена и не может быть реализована в реальных случаях.У кого-нибудь есть опыт в этом?
Спасибо!