如何在Pusher中向频道的所有成员广播消息事件?

时间:2020-07-07 05:29:49

标签: angular socket.io pusher pusher-js

我正在尝试使用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));

})

1 个答案:

答案 0 :(得分:0)

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

但是对于您的聊天用例,我建议您先将消息发送到服务器,然后再将其广播回聊天通道(从而使每个参与者包括发件人)。

之所以这样做,是因为它可以更轻松地管理持久性,并确保每条消息具有相同的ID和时间戳。

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

然后,服务器将确定生成消息ID /时间戳并保留每个消息。这样可以确保在发送给每个参与者之前先保存邮件。

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