簡體   English   中英

如何使用 Laravel / Pusher / Echo 在私人頻道中發送有效載荷/消息

[英]How to send a payload/message in private channel with Laravel / Pusher / Echo

在花了最后 5 個小時試圖解決這個問題之后,我快要 go 發瘋了,我真的需要一些幫助。

我想要實現的是能夠以某種形式向客戶端發送狀態消息。 只要我能閱讀並理解客戶端上的消息,什么樣的消息並不重要。 我正在將三個作業分派到 Laravel 中的一個隊列,我想使用事件 class 沿途向客戶中繼一條消息,讓他/她知道我們已經走了多遠。

目前我可以向客戶端發送消息,專用通道正在運行並且到目前為止一切正常,但我唯一設法發送的是用戶對象。 這根本沒有幫助。

引導程序.js

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'xxxxxx',
    cluster: 'eu',
    forceTLS: true
});

var channel = window.Echo.private('user.'+ window.Laravel.user); // 
channel.listen('.status', function(data) {
  console.log(JSON.stringify(data));
});

部署狀態.php

namespace App\Events;

use App\User;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class DeployStatus implements ShouldBroadcast
{
  use Dispatchable, InteractsWithSockets, SerializesModels;

  public $user;

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

  public function broadcastOn()
  {
      return new PrivateChannel('user.'.$this->user->id);
  }

  public function broadcastAs()
  {
      return 'status';
  }

  public function broadcastWith()
  {
      return ['id' => $this->user->id];
  }
}

(我嘗試了 broadcastWith() 方法,但沒有效果)

最后一個DeploySite.php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Events\DeployStatus;

class DeploySite implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct()
    {
    }

    public function handle()
    {
        $user = auth()->user();
        event(new DeployStatus($user));
    }
}

如果有人能在正確的方向上幫助我,我將不勝感激。 謝謝!

broadcastWith()當然有效。 我目前正在我的項目中使用它。 嘗試完全停止您的項目,再次運行php artisan optimize:clearphp artisan serve

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM