[英]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:clear
和php artisan serve
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.