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!?

Спасибо за любые указатели.

0 ответов

Другие вопросы по тегам