12
我使用Pusher API在Laravel 5.4中使用JQuery發送通知。我發現,無論何時我從Firefox或Safari發送通知...它都能成功訪問Chrome瀏覽器,但反之亦然。另一個問題是,當我發送消息時,它正在被我接收!雖然我用toOthers()
方法發件人收到的推送通知僅在Chrome中使用。 Laravel 5.4和JQuery
我的代碼如下。如果您需要更多信息,請告訴我。
控制器代碼
broadcast(new SendMessageEvent("hi", \Auth::user()))->toOthers();
刀片
$(function() {
Pusher.logToConsole = true;
var pusher = new Pusher('Pusher API key', {
authEndpoint: 'broadcasting/auth',
auth: {headers: {'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')}}
});
var channel = pusher.subscribe('private-user-channel.{!! \Auth::user()->UserID !!}');
channel.bind('App\\Events\\SendMessageEvent', function(data) {
console.log(data);
});
});
事件
class SendMessageEvent implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $msg;
public $user;
public $userid;
public function __construct($msg, $user) {
$this->msg = $msg;
$this->user = $user;
$this->userid = $this->user->UserID;
}
public function broadcastOn()
{
return new PrivateChannel('user-channel.1');
}
}
頻道
Broadcast::channel('user-channel.{userid}', function ($user, $userid) {
return (int) $user->UserID === (int) $userid;
});
從文檔:「在Laravel 5.3中,由於中間件尚未運行,因此無法訪問控制器構造函數中的會話或已驗證用戶。」更多信息:https://laravel.com/docs/5.3/升級#升級-5.3.0 –
我想你的'SendMessageEvent'類方法'broadcastOn',你需要像這樣改變它:'返回新的PrivateChannel('user-channel。'。$ this-> userid);' – elegisandi
問題仍然存在? – mimo