Как я могу передать событие сообщения всем участникам канала в 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));

})

person F. Krovinsky    schedule 07.07.2020    source источник


Ответы (1)


Невозможно отправлять клиентские события отправителю сообщения, однако, поскольку отправитель уже знает, что это за сообщение, вы можете просто добавить сообщение в массив сообщений при отправке сообщения другим участникам чата.

Однако для вашего варианта использования чата я бы рекомендовал сначала отправить сообщение на сервер, а затем передать его обратно в канал чата (и, следовательно, каждому участнику, включая отправителя).

Причина этого в том, что это упрощает управление сохранением и гарантирует, что каждое сообщение имеет одинаковый идентификатор и отметку времени.

Что бы я сделал, это сначала отправить каждое сообщение обратно на сервер, например. POST-сервер/api/сообщения

Затем сервер определял бы создание идентификатора/временной метки сообщения и сохранял каждое сообщение. Это гарантирует сохранение сообщения перед отправкой каждому участнику.

Наконец, сервер будет транслировать сообщение в канал чата. Это означает, что все подписчики канала, включая отправителя сообщения, получат сообщение.

person Chris C    schedule 08.07.2020