在我的旧版本 Laravel 中,消息是这样发送的
class NoticeEvent implements ShouldBroadcastNow
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public function __construct($message)
{
$this->message = $message;
}
public function broadcastOn()
{
return ['channelName'];
}
public function broadcastAs()
{
return 'eventName';
}
}
这个方法效果很好。但我将 laravel 更新到版本 10.48.4,其中没有方法
broadcastAs
和 broadcastOn
返回 PrivateChannel
对象。不可能从 Laravel 向推送者发送消息
class NoticeEvent implements ShouldBroadcastNow
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public function __construct($message)
{
$this->message = $message;
}
public function broadcastOn(): array
{
return [
new PrivateChannel('channelName'),
];
}
}
我阅读了文档,所有内容都有描述 详细介绍但我只是没有可以重写的方法,例如
broadcastAs()
。
如果你打开源文件
Illuminate\Contracts\Broadcasting;
位于/vendor/laravel/framework/src/Illuminate/Contracts/Broadcasting
,它只有一个接口interface ShouldBroadcast
,只有broadcastOn()
这个文件描述了一个接口和一种方法,我不清楚如何实现文档中的其他接口。
class NoticeEvent implements ShouldBroadcastNow {
use Dispatchable, InteractsWithSockets, SerializesModels;
public function __construct($message)
{
$this->message = $message;
}
public function broadcastOn(): array
{
//public channel name
return [
new Channel('channelName'),
];
}
public function broadcastAs(): string
{
//event name
return 'eventName';
}
public function broadcastWith(): array
{
//if you need to send a message
return ['message' => $this->message];
}
}
从代码调用
event(new NoticeEvent("message text"));