2016-06-16 26 views
1

Ich habe Pusher für mein Projekt verwendet. Ich konfiguriere Broadcasting nach Laravel-Dokumenten. Wenn ich meinen Event Pusher gefeuert habe, funktioniert es nicht für mich. Aber wenn ich Daten von der Schubsteuerkonsole sende, dann erhält der Schieber diese Daten. Ich versuche auch vinkla/pusher. Es funktioniert gut, aber Laravel Event Broadcasting funktioniert nicht. Bitte helfen Sie mir.Laravel Event Broadcast funktioniert nicht mit Pusher

Hier ist mein TestEvent.php Code

namespace Factum\Events; 

use Factum\Events\Event; 
use Illuminate\Queue\SerializesModels; 
use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 

class TestEvent implements ShouldBroadcast 
{ 
    use SerializesModels; 

    public $text; 

    /** 
    * Create a new event instance. 
    * 
    * @return void 
    */ 
    public function __construct($text) 
    { 
     $this->text = $text; 
    } 

    /** 
    * Get the channels the event should be broadcast on. 
    * 
    * @return array 
    */ 
    public function broadcastOn() 
    { 
     return ['test-channel']; 
    } 
} 

Antwort

2

ich ein ähnliches Problem festgestellt und ging Schritt für Schritt und die Probleme behoben. Ich nehme an, Sie laufen Laravel 5.3. Hier ist ein Schritt für Schritt zu Fuß durch das könnte hilfreich sein:

1) Überprüfen Sie Ihre Konfigurationsdatei: in config \ broadcasting.php:

'connections' => [ 

    pusher' => [ 
    'driver' => 'pusher', 
    'key' => env('PUSHER_KEY'), 
    'secret' => env('PUSHER_SECRET'), 
    'app_id' => env('PUSHER_ID'), 
    'options' => [ 
         'cluster' => 'eu', 
         'encrypted' => true, 
         // 'host' => 'api-eu.pusher.com' 
         // 'debug' => true, 
        ], 
    ], 

2) Erstellen Sie eine Route für das Testen in Ihrem „web .php“Datei

Route::get('/broadcast', function() { 

     event(new \Factum\Events\TestEvent('Sent from my Laravel application')); 

     return ok; 
}); 

3) in Ihrem "TestEvent.php" Ereignisdatei Sie diese Methode, um hinzuzufügen, sollten Sie Ihre Ereignisnamen angeben:

/** 
* The event's broadcast name. 
* 
* @return string 
*/ 
public function broadcastAs() 
{ 
    return 'my_event'; 
} 

4) Öffnen Sie Ihre Pusher dashboard und gehen Sie zur Debug-Konsole. Halten Sie die Seite offen, damit Sie feststellen können, ob Sie eine erfolgreiche Anfrage von Ihrer Anwendung erhalten haben.

5) Starten oder starten Sie den Warteschlangenarbeiter neu. Dieser Schritt kann alles machen oder abbremsen. Wenn Sie Mysql-Tabellen für Warteschlangen verwenden, gehe ich davon aus, dass Sie bereits Ihre für die Warteschlangen erforderlichen Datenbanktabellen "jobs" und "failed_jobs" eingerichtet haben. Ein weiteres wichtiges Element ist der Arbeiter - der Warteschlangenprozessor. Ohne einen aktiven Worker, der zur Verarbeitung Ihrer Warteschlange ausgeführt wird, verbleiben die Jobs (TestEvent) in der Auftragstabelle, was bedeutet, dass die Aufträge ausstehen und nichts weiter passiert, bis ein aktiver Worker mit der Verarbeitung der Warteschlange beginnt.

Sie können die Arbeiter wie folgt beginnen:

[email protected]# php artisan queue:work --tries=3 

6) Nun, da Sie alles haben, um auf einen Anruf tätigen: „http://your-app.laravel/broadcast“ und überprüfen Sie die Schieber Debug-Konsole auf eine Antwort.

Optionaler Schritt: Wenn noch etwas fehlt, können Sie Ihre Anwendung Interaktion debuggen mit Pusher wie so: In Ihrem Test Route versuchen, dies zu tun:

Route::get('/broadcast', function() { 

    /* New Pusher instance with our config data */ 
    $pusher = new \Pusher(config('broadcasting.connections.pusher.key'), config('broadcasting.connections.pusher.secret'), config('broadcasting.connections.pusher.app_id'), config('broadcasting.connections.pusher.options')); 

    /* Enable pusher logging - I used an anonymous class and the Monolog */ 
    $pusher->set_logger(new class { 
        public function log($msg) 
        { 
         \Log::info($msg); 
        } 
       }); 

    /* Your data that you would like to send to Pusher */ 
    $data = ['text' => 'hello world from Laravel 5.3']; 

    /* Sending the data to channel: "test_channel" with "my_event" event */ 
    $pusher->trigger('test_channel', 'my_event', $data); 

    return 'ok'; 

}); 

hoffe, dass ich es auch für Sie arbeiten! Viel Spaß beim Codieren! ;)