0

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

})
4

1 回答 1

0

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

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

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

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

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

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

于 2020-07-08T10:22:05.633 回答