【问题标题】:Pusher receive event with null valuesPusher 接收具有空值的事件
【发布时间】: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', ], ];

标签: laravel vue.js pusher


【解决方案1】:

我认为你写错了事件类的构造函数。 在这里,您在messageuser 变量之前添加了额外的$

    public function __construct($message, User $user)
    {
        $this->$message = $message;
        $this->$user = $user;
    }

应该像下面这样。

    public function __construct($message, User $user)
    {
        $this->message = $message;
        $this->user = $user;
    }

【讨论】:

    猜你喜欢
    • 2020-09-05
    • 2017-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2021-05-27
    • 2020-09-19
    • 2018-05-17
    相关资源
    最近更新 更多