嗨,这是我的控制者:
namespace App\Http\Controllers;
use App\Message;
use App\Events\MessageEvent;
use Illuminate\Http\Request;
class MessageController extends Controller
{
public function index(){
return event(new MessageEvent([1,2,34]));
}
}`
和我的活动:
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class MessageEvent implements ShouldBroadcast
{
/**
* Create a new event instance.
*
* @return void
*/
public $data;
public function __construct($message)
{
$this->data = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn(){
return ['message'];
}
public function broadcastAs(){
return 'messageEvent';
}
public function broadcastWith(){
return $this->data;
}
}
但是当我请求服务器时,它什么也不返回,或者显示“参数1不是数组”;当我把dd放到broadcastWith中时,它显示数据,但是它返回anaything。我几乎尝试了一切
1)broadcastOn()
应该返回一个通道实例。
public function broadcastOn() {
return new PresenceChannel('messages');
}
2)默认情况下将返回所有public
属性,因此除非您要操作数据,否则无需使用broadcastWith()
方法。
public function broadcastWith(){
return $this->data;
}
In this answer我已经详细解释了。