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

How can I broadcast a message event to all members of a channel in Pusher?

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

})

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

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

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

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

服务器随后会确定生成一条消息 id/timestamp 并保留每条消息。这保证消息在发送给每个参与者之前被保存。

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