【发布时间】:2023-02-25 07:11:55
【问题描述】:
我正在尝试按照本教程进行操作:https://www.youtube.com/watch?v=AUlbN_xsdXg,它非常简单明了,但不幸的是对我不起作用。基于 cmets,其他人似乎没有这个问题。
这是我到目前为止所做的:
- 安装了 "beyondcode/laravel-websockets": "^1.13" 和 "pusher/pusher-php-server": "7.0" (首先尝试了当前版本 7.2 但错误没有区别)并做了 composer 更新
- 在 config/app.php 中取消注释 App\Providers\BroadcastServiceProvider
- 将 .env 更改为 BROADCAST_DRIVER=pusher 并修改了 config/broadcasting.php
'pusher' => [ 'driver' => 'pusher', 'key' => env('PUSHER_APP_KEY'), // These env vars have config:cache'd dummy values 'secret' => env('PUSHER_APP_SECRET'), 'app_id' => env('PUSHER_APP_ID'), 'options' => [ 'cluster' => env('PUSHER_APP_CLUSTER'), 'useTLS' => false, 'encrypted' => false, 'host' => '127.0.0.1', 'port' => '6001', 'scheme' => 'http', ], ],- 已发布 websockets.php 和迁移文件/执行迁移
- 创建了虚拟事件类并添加了“implements ShouldBroadcast”
<?php 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 PlaygroundEvent implements ShouldBroadcast { use Dispatchable, InteractsWithSockets, SerializesModels; /** * Create a new event instance. * * @return void */ public function __construct() { // } /** * Get the channels the event should broadcast on. * * @return \Illuminate\Broadcasting\Channel|array */ public function broadcastOn() { return new Channel('public.playground.1'); // return new PrivateChannel('channel-name'); } }- 在我的 web.php 路由文件中添加了一个测试
Route::get('/playground', function(){ event(new \App\Events\PlaygroundEvent()); return null; });- 访问该页面时遇到错误:
Argument 4 passed to Pusher\Pusher::trigger() must be of the type array, null given, called in [...]vendor\laravel\framework\src\Illuminate\Broadcasting\Broadcasters\PusherBroadcaster.php on line 113如果您搜索该错误,您会发现 2 个结果都未解决。不知道在哪里提到这一点,但 WebSockets 仪表板似乎工作正常。
环境:PHP Version 7.4.5, Windows 10 64, "laravel/framework": "^7.0", "beyondcode/laravel-websockets": "^1.13", "pusher/pusher-php-server": "7.0" and 7.2 同时尝试修复。
由于这个错误很少,我不确定下一步该去哪里,当然除了这里。任何帮助表示赞赏,谢谢。
编辑:堆栈跟踪:https://justpaste.it/9lwe3
【问题讨论】:
-
很好的问题。回到你的 Laravel.log,到堆栈跟踪。供应商文件夹中的错误源自其他地方。你介意显示错误的堆栈跟踪吗?
-
@UnderDog 我已将它添加到问题的底部,谢谢。
标签: php laravel pusher laravel-websockets