Laravel 推送器如何在没有广播的情况下工作

问题描述 投票:0回答:1

在我的旧版本 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()
这个文件描述了一个接口和一种方法,我不清楚如何实现文档中的其他接口。

laravel pusher
1个回答
0
投票
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"));

© www.soinside.com 2019 - 2024. All rights reserved.