laravel 事件应该广播不起作用
Posted
技术标签:
【中文标题】laravel 事件应该广播不起作用【英文标题】:laravel Event shouldbroadcast not working 【发布时间】:2018-12-19 00:02:25 【问题描述】:我正在尝试制作一个实时 socket.io 应用程序。
redis 连接很好,因为我可以在 tinker 中做到这一点,而且效果很好。
Redis::publish('test-channel','test-message');
但我想用事件来发布消息
应用\事件\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');
在公共函数broadcastOn
我试过了
return ['test-channel'];
return 'test-channel';
return new Channel('test-channel');
一切都不起作用。
我在修补程序中这样做
event(new App\Events\ChatMessage('bear','banana'));
而 laravel 只是返回 []
我知道我可以使用监听器通过 Redis::publish() 来处理它, 但大多数教程都没有这样做。
我还需要检查什么?
【问题讨论】:
【参考方案1】:我发现即使我触发了事件,消息也会排队。
我跑完之后
php artisan queue:listen
客户端收到消息!
所以我通过将 ShouldBroadcast 更改为 ShouldBroadcastNow 来解决它,它可以工作!
【讨论】:
我猜是laravel版本的问题,我现在是5.6。 我现在才遇到这个问题,我用的是最新版本的 Laravel 7。我只能用ShouldBroadcastNow
解决这个问题。我在生产服务器上使用 dokku。 ShouldBroadcast
在本地一切正常以上是关于laravel 事件应该广播不起作用的主要内容,如果未能解决你的问题,请参考以下文章