Эхо Laravel прослушивает функцию шепота, которая не работает

Я создаю приложение для живого чата, но обнаружил, что функция listenforwhisper не работает, но функция .whisper() работает нормально, толкатель также получил событие ввода клиента. введите здесь описание изображения

Вот мой код:

Чтобы слушать шепотом:

Echo.private(`messages.${this.user.id}`)
    .listen("NewMessage", (e) => {
      this.handleIncoming(e.message);
    })
    .listenForWhisper("typing", (e) => {
      if(e.name !='') {
        this.typeStatus = 'typing .........'
      }
      else {
        this.typeStatus = ''
      }
      console.log(this.typeStatus);
    });

Для шепота:

watch: {
    message() {
      Echo.private(`messages.${this.user.id}`)
      .whisper("typing", {
        name: this.message
      });
    }
  }

Для канала:

Broadcast::channel('messages.{id}', function ($user, $id) {
    return (int) $user->id === (int) $id;
});

Теоретически моя консоль вернет typeStatus, но у меня в консоли ничего нет.


person chengwei    schedule 15.11.2018    source источник


Ответы (1)


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

person Niko Peltoniemi    schedule 15.11.2018
comment
так вы имеете в виду, что у меня должен быть канал, идентификатор которого использует идентификатор комнаты, и этот идентификатор комнаты будет принимать как отправителя, так и получателя и возвращать true ?? - person chengwei; 15.11.2018
comment
Точно, вы можете сохранить идентификаторы комнат в базе данных и добавить их как отношения manyToMany для обоих пользователей. - person Niko Peltoniemi; 16.11.2018
comment
broadcastToOthers не похоже на правду. Я использовал его, и открывая одну и ту же страницу в двух вкладках, слушаю шепот текущего пользователя. Я думаю, что разработчик должен обрабатывать шепот при показе. - person ssi-anik; 30.05.2020