【问题标题】:How can I broadcast a message event to all members of a channel in Pusher?如何在 Pusher 中向频道的所有成员广播消息事件?
【发布时间】:2020-10-27 07:45:17
【问题描述】:

我正在尝试使用 Pusher 和 Angular 设计一个聊天应用程序。我已经设法设置频道并发送消息。但是,消息事件会广播给除发送者之外的所有客户端。

如何向包括发送者在内的所有频道成员广播?

this.channel.bind('pusher:subscription_succeeded', (info) => {
  console.log(info);
});



this.channel.bind('client-message', (msg)=>{
  
  this.pusherMessages.next(new Message(msg.msg , msg.id , msg.date));

})

【问题讨论】:

    标签: angular socket.io pusher pusher-js


    【解决方案1】:

    无法将客户端事件发送给消息发送者,但是由于发送者已经“知道”消息是什么,因此您可以在将消息发送给其他聊天参与者时将消息添加到消息数组中。

    但是,对于您的聊天用例,我建议先将消息发送到服务器,然后将其广播回聊天频道(因此每个参与者都包括发送者)。

    这样做的原因是因为它更容易管理持久性并保证每条消息具有相同的 id 和时间戳。

    我要做的是首先将每条消息发送回服务器,例如POST 服务器/api/消息

    然后,服务器将确定生成消息 ID/时间戳并持久化每条消息。这保证了消息在发送给每个参与者之前被保存。

    最后,服务器会将消息广播到聊天频道。这意味着频道的所有订阅者(包括消息发送者)都会收到消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 2022-07-18
      • 2018-02-23
      • 2017-07-06
      • 1970-01-01
      • 2014-11-23
      • 2020-10-07
      相关资源
      最近更新 更多