Pusher Chatkit в Vue - крючок onNewMessage срабатывает дважды?
У меня есть приложение Vue.js, использующее Pusher Chatkit.
У меня проблема, я не могу найти ответ в течение некоторого времени. Всякий раз, когда я повторно посещаю представление / компонент Chatkit onNewMessage()
крючок срабатывает несколько раз. Это зависит от того, сколько раз я снова захожу на страницу.
Обновление страницы или первая загрузка решают проблему до следующего повторного посещения.
Должно быть, я создаю несколько слушателей каждый раз, когда посещаю представление, но я не понимаю, что это за слушатели.
Пушер заявляет, что подписки на комнаты "переопределяют" старые, когда это делается дважды.
Вот мой компонент chat.vue
import chatConnection from '../chatkit.js'
created(){
let chatManagerConnectPromise = chatConnection(this, uid)
Promise.all([..., chatManagerConnectPromise, ...])
.then(results => {
// ...
this.initiateNewChatState(results[1])
// ...
})
.catch(error =>{
});
},
methods: {
initiateNewChatState(currentUser){
this.subscribeToAllUserRooms(currentUser)
},
subscribeToAllUserRooms(currentUser){
for(let room of currentUser.rooms){
this.subscribeToRoom(currentUser, room.id)
}
},
subscribeToRoom(currentUser, roomId){
currentUser.subscribeToRoom({
roomId: roomId,
hooks: {
onNewMessage: message => {
console.log("CHAT | onNewMessage | new: ", message.text)
}
},
messageLimit: 10
})
.catch(error => {
this.notifyError("Uh oh", "Something is not right")
});
}
}
А вот мой контент chatkit.js:
import { ChatManager, TokenProvider } from '@pusher/chatkit'
export const chatConnection = ({ state, actions }, uid) =>{
return new ChatManager({
instanceLocator: "##:###:###:####:####",
userId: uid,
tokenProvider: new TokenProvider({url: 'https://...' })
})
.connect({
onAddedToRoom: room => {
// some action taken
},
onRemovedFromRoom: room => {
// some action taken
},
onRoomDeleted: room => {
// some action taken
}
})
.then(user => {
return user
})
.catch(error => console.log('CHATKIT | Error on connection', error))
}
Опять же, проблема в том, что onNewMessage()
запускается один раз в первый раз после обновления / первой загрузки страницы, но затем увеличивается на единицу при каждом новом посещении страницы (навигация назад и вперед).
Я создаю некоторых слушателей с каждым посещением, но это не может быть ChatManager, а не User.subscribeToRoom!?
Спасибо за любые указатели.