2017-04-07 21 views
12

मैं 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; 
}); 
+3

प्रलेखन से: "लैरवेल 5.3 में, आप अपने नियंत्रक के कन्स्ट्रक्टर में सत्र या प्रमाणीकृत उपयोगकर्ता तक नहीं पहुंच सकते हैं क्योंकि मिडलवेयर अभी तक नहीं चला है।" अधिक जानकारी: https://laravel.com/docs/5.3/ अपग्रेड # अपग्रेड-5.3.0 –

+2

मुझे लगता है कि आपकी 'SendMessageEvent' क्लास विधि' प्रसारणऑन' पर आपको लगता है कि आपको इसे इस तरह बदलना होगा: 'नया प्राइवेट चैनल (' उपयोगकर्ता-चैनल। '$ $-> userid); ' – elegisandi

+0

सवाल अभी भी खुला है? – mimo

उत्तर

0

मैं इस जबकि, खोज करता है, तो सवाल अभी भी खुला है पाया:

आपके घटना userID 1

return new PrivateChannel('user-channel.1'); 

के लिए सब कुछ का प्रसारण करता है लेकिन अपने अन्य उपयोगकर्ताओं को अपने स्वयं चैनल से कनेक्ट अपने यूजर आईडी के साथ। सार्वजनिक चैनल में बदलें और फिर अपने कोड के साथ परीक्षण करें, बाकी सही लगता है।

संबंधित मुद्दे