最近我在我的 Vue 项目中实现了Pusher ChatKit 。
我已经查看了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)这引出了一个问题,订阅用户已经属于的用户房间的正确流程是什么,以及如何检测新消息和新房间创建(当有人开始与你聊天时)?
文档确实被简化了,并且对于现实生活中的案例是不可实现的。有人有这方面的经验吗?
谢谢!