回声连接不会从广播的在线频道接收数据

时间:2018-04-08 14:42:39

标签: php laravel vue.js pusher laravel-echo

我在laravel的回声和推动者中非常基本,尽管有文档和教程,但我一直面临着一个问题。我试图在YouTube网站上按照YouTube视频创建实时聊天消息功能。 来自我的控制器,模型,频道和app.js的代码摘录分别如下:

public function send(Request $request)
{
    $user = Auth::user();
    $id = Auth::user()->id;

    $message = $user->messages()->create([
        'user_id' => $id,
        'messages' => $request->get('messages')
    ]);
    broadcast(new MessagePosted($message, $user));
    return ['status' => 'Message Sent!'];
}

模型:

 public function broadcastOn()
    {
//        return ['chatit'];
          return new PresenceChannel('chatit');
    }

信道:

Broadcast::channel('chatit', function ($user) {
    return true;
});

应用程式:

window.Echo.join('chatit')
            .listen('MessagePosted', (e) => {
        console.log(e)
    });

我现在的问题是,如果我在我的模型中返回chatit(我已经评论过),并将join更改为channel,我会看到console.log的结果,但是当我使用在线通道时,并在app.js中使用join,我只获取消息发送状态。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我不知道为什么但是经过几个小时的挫折之后,我重新启动了我的电脑,它才开始工作。

我还发现终止并重新运行php artisan服务流程也可以解决问题

答案 1 :(得分:1)

就我而言,我的事件 MessagePosted 位于 Chat 目录中的子目录 Events 中,为了能够记录事件数据,您必须指向该子目录< /p>

app\Events\Chat\MessagePosted


window.Echo.join('chatit').listen('Chat\\MessagePosted', (e) => {
   console.log(e)
})


现在它 100% 工作