Laravel echo listen for whisper 功能不工作

Laravel echo listen for whisper function not working

我正在构建一个实时聊天应用程序,但我发现 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;
});

理论上,我的控制台将 return typeStatus,但我的控制台中什么也没有。

Whisper 的工作方式类似于 broadcastToOthers。您现在正在尝试倾听当前用户的窃窃私语。你应该有一个房间,耳语会传到那里,那里应该有多个客户可以接收。现在您的频道已与用户绑定,其他人无法看到通过该频道的消息。

好的,我遇到了同样的问题。我有 2 个频道和 2 个用户。我用 wisper

设置了一个间隔
setInterval(() => {
            channel.whisper('typing', {
                message: 'hola!'
            });
        }, 3000);

channel.listenForWhisper('typing', (e) => {
                console.log('Typing');
                console.log(e);
            })

问题是我正在接收事件,但在我将第二个用户连接到频道之前无法看到 listenForWhisper 的输出。

连接第二个用户后,一切正常。所以如果你有同样的问题我就离开了她。