【发布时间】:2020-09-06 21:05:28
【问题描述】:
我使用的是 laravel 5.8 版本。我正在向推送者发送消息,但推送者接收事件 {"message": null}。 这是我的 broadcasting.php 文件
'connections' => [
'pusher' => [
'driver' => 'pusher',
'key' => env('PUSHER_APP_KEY'),
'secret' => env('PUSHER_APP_SECRET'),
'app_id' => env('PUSHER_APP_ID'),
'options' => [
// 'cluster' => env('PUSHER_APP_CLUSTER'),
// 'useTLS' => true,
'cluster' => 'ap2',
'useTLS' => true
],
],
这是我的 chatevent.php 文件。
namespace App\Events
use Illuminate\Broadcasting\Channel;
use Illuminate\Foundation\Auth\User;
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 ChatEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $message;
public $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($message, User $user)
{
$this->$message = $message;
$this->$user = $user;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}
有我的 bootstrap.js 文件。 从“laravel-echo”导入 Echo;
window.Pusher = require('pusher-js');
window.Echo = new Echo({
// broadcaster: 'pusher',
// key: process.env.MIX_PUSHER_APP_KEY,
// cluster: process.env.MIX_PUSHER_APP_CLUSTER,
// encrypted: truebroadcaster: 'pusher',
broadcaster: 'pusher',
key:'REDACTED',
cluster: 'ap2',
encrypted: true
});
我向推送器发送消息的控制器功能。
public function send()
{
$message = 'hello';
$user = User::find(Auth::id());
event(new ChatEvent($message, $user));
}
}
如何解决????
【问题讨论】:
-
我已编辑您的问题以删除您的 API 密钥,但我建议您轮换应用密钥以防止未经授权的访问。
-
你能分享你正在监听事件的代码吗?在 Pusher 调试控制台中检查时消息内容是否正确(可通过应用仪表板获得)?
-
推送器调试控制台 { "message": null, "user": null }
-
受保护的 $listen = [ 'App\Events\ChatEvent' => [ 'App\Listeners\ChatListner', ], ];