【发布时间】: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() 来处理它, 但大多数教程都没有这样做。
我还需要检查什么?
【问题讨论】:
标签: laravel events redis broadcast