laravel事件应广播无法正常工作

时间:2018-07-11 04:10:41

标签: laravel events redis broadcast

我正在尝试制作一个实时的socket.io应用程序。

redis连接很好,因为我可以修补一下,并且工作正常。

Redis::publish('test-channel','test-message');

但是我想使用事件来发布消息

app \ Events \ ChatMessage.php:

    namespace App\Events;

    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 ChatMessage implements ShouldBroadcast
    {
        use Dispatchable, InteractsWithSockets, SerializesModels;

        public $name;
        public $message;

        public function __construct($name,$message)
        {

          $this->name = $name;
          $this->message = $message;
        }

        public function broadcastOn()
        {

          return ['test-channel'];
          // return new Channel('test-channel');
        }
    }

在公共功能广播中

我尝试过

           return ['test-channel'];
           return 'test-channel';
           return new Channel('test-channel');

所有方法都不起作用。

我会做些修补

event(new App\Events\ChatMessage('bear','banana'));

而laravel刚返回[]

我知道我可以使用监听器通过Redis :: publish()处理它, 但是大多数教程都不这样做。

我还需要检查什么?

1 个答案:

答案 0 :(得分:0)

我发现即使我触发了该事件,消息也将排队。

我运行后

php artisan queue:listen

客户收到消息!

所以我通过将ShouldBroadcast更改为ShouldBroadcastNow来解决它,并且可以正常工作!