首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pusher ChatKit -房间和roomSubscriptions -如何检测新消息

Pusher ChatKit -房间和roomSubscriptions -如何检测新消息
EN

Stack Overflow用户
提问于 2018-06-07 13:23:19
回答 1查看 1.3K关注 0票数 1

最近,我在我的Vue项目中实现了Pusher ChatKit

我已经检查了js documentation,但我对启动应用程序的流程感到困惑,这样我就有了新消息的活跃监听器。

我有5个房间是currentUser的一部分。

当我这样做的时候

代码语言:javascript
复制
chatManager
    .connect()
    .then(currentUser => {
    })

我得到了当前用户,我可以访问他的roomsroomSubscriptions

1)有什么区别?用户所属的任何房间都应该是他订阅的房间,不是吗?

文档说我需要订阅每个用户房间才能设置onNewMessage()钩子。

所以我是这样做的:

代码语言:javascript
复制
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)这就引出了一个问题,订阅用户已经加入的用户房间的正确流程是什么,以及如何检测新消息和新房间的创建(当有人开始与您聊天时)?

文档确实被简化了,并且无法在实际案例中实现。有人有这方面的经验吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-09-30 18:37:13

不幸的是,这是目前唯一的方法。在Pusher ChatKit中,每个操作都依赖于当前用户&用户对房间的订阅。用户不必订阅他/他是的成员的房间。它既有好处也有坏处。但现在我可以说,您可以只设置messageLimit: 0。这不会在您第一次加载页面时获取所有消息。更确切地说,当用户点击房间查看消息时,通过以下方法获取消息:

代码语言:javascript
复制
           currentUser.subscribeToRoom({
                roomId: room.id,
                hooks: {
                    onNewMessage: (message) => {
                        // do something with the message
                    },
                    onUserStartedTyping : (user) => {
                        // do something with the user
                    },
                    onUserStoppedTyping : (user) => {
                        // do something with the user
                    },
                },
                messageLimit: 10
            });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50733477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档