मैं JQuery के साथ Laravel 5.4 में अधिसूचनाएं भेजने के लिए पुशर एपीआई का उपयोग कर रहा हूं। मुझे पता चला कि जब भी मैं फ़ायरफ़ॉक्स या सफारी से अधिसूचना भेजता हूं ... यह क्रोम ब्राउजर को सफलतापूर्वक पहुंचाता है लेकिन इसके विपरीत नहीं। एक और समस्या यह है कि जब मैं संदेश भेजता हूं, तो यह मेरे द्वारा प्राप्त किया जा रहा है !!! हालांकि मैंने toOthers()
विधिप्रेषक द्वारा प्राप्त पुशर अधिसूचना और केवल क्रोम में काम करना। लैरवेल 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;
});
प्रलेखन से: "लैरवेल 5.3 में, आप अपने नियंत्रक के कन्स्ट्रक्टर में सत्र या प्रमाणीकृत उपयोगकर्ता तक नहीं पहुंच सकते हैं क्योंकि मिडलवेयर अभी तक नहीं चला है।" अधिक जानकारी: https://laravel.com/docs/5.3/ अपग्रेड # अपग्रेड-5.3.0 –
मुझे लगता है कि आपकी 'SendMessageEvent' क्लास विधि' प्रसारणऑन' पर आपको लगता है कि आपको इसे इस तरह बदलना होगा: 'नया प्राइवेट चैनल (' उपयोगकर्ता-चैनल। '$ $-> userid); ' – elegisandi
सवाल अभी भी खुला है? – mimo