Laravel回音按钮未接收广播事件

时间:2017-02-25 20:29:15

标签: php laravel websocket vue.js pusher

我有一个问题,我现在正试图整天解决。我已经跟着了 this教程。目标是与Laravel echovue.jspusher进行聊天。

我完成了与教程完全相同的所有事情但由于某种原因我在pusher控制台中没有收到任何事件。仅显示连接:enter image description here

但没有事件。我开火的事件看起来像这样:

<?php

namespace App\Events;

use App\Message;
use App\User;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class MessageSent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
     * @var
     */
    public $user;

    /**
     * @var
     */
    public $message;

    /**
     * MessageSent constructor.
     * @param User $user
     * @param Message $message
     */
    public function __construct(User $user, Message $message)
    {
        $this->user = $user;
        $this->message = $message;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('chat');
    }
}

我像这样开火:

broadcast(new MessageSent($user, $message))->toOthers();

当我在MessageSent事件类中dd('test');这样时:

public function broadcastOn()
{

    dd('test');

    return new PrivateChannel('chat');
}

dd('test');显示在我的网络标签中。

我将Laravel 5.4Vue.js 2.0Homestead一起使用。这可能会发生什么?!

3 个答案:

答案 0 :(得分:0)

根据您的调试控制台屏幕截图,您永远无法订阅任何频道,您是否为私人频道订阅设置了必要的身份验证?

您一直关注的教程的完整演示代码是on github,因此您可能需要查看该内容并查看其中的差异。

答案 1 :(得分:0)

如果您使用的是Laravel 5.4,请确保已设置了频道验证。

例如,在您的routes/channels.php文件中,应该有这样的内容:

Broadcast::channel('chat', function ($user) {
    return true; // change this to your authentication logic
});

答案 2 :(得分:0)

看起来您正在关注FunctionBody教程。我也很难搞清楚。我已经回答this了。你能看一下吗?

我在聊天系统中打字功能。请查看here上的代码。

如果您有任何疑问,请与我们联系。谢谢:))