2017-10-19 1 views
0

Ich habe ein Ereignis namens "Event1" und ein Event-Listener "Event1Listener" für das Ereignis in meiner Lumen-Anwendung. Ich muss eine benutzerdefinierte Nachricht an einen Redis-Kanal namens 'channel1' veröffentlichen, wenn event1 ausgelöst wird. Wie kann ich das machen?Wie veröffentliche ich eine Nachricht in einem Redis-Kanal mit Lumen Broadcast?

Event1.php

<?php 
    namespace App\Events; 
    use Illuminate\Contracts\Broadcasting\ShouldBroadcast; 
    class Event1 extends Event implements ShouldBroadcast 
    { 
     /** 
     * Create a new event instance. 
     * @return void 
     */ 
     public function __construct() {   
     } 
     /** 
     * Get the channels the event should be broadcast on. 
     * 
     * @return array 
     */ 
     public function broadcastOn() { 
      return ['channel1']; 
     } 
    } 
?> 

Event1Listener.php

<?php 

    namespace App\Listeners; 

    use App\Events\Event1; 
    use Illuminate\Queue\InteractsWithQueue; 
    use Illuminate\Contracts\Queue\ShouldQueue; 

    class Event1Listener { 
     /** 
     * Create the event listener. 
     * 
     * @return void 
     */ 
     public function __construct(){ 
     } 
     /** 
     * Handle the event. 
     * 
     * @param Event1 $event 
     * @return void 
     */ 
     public function handle(Event1 $event) { 
      echo "What should I add here?"; 
     } 
    } 
?> 

Antwort

0

Angenommen, Sie haben Redis konfiguriert Wenn nicht die laravel documentation Besuche und lumen documentation

um Mitteilung an die veröffentlichen Kanal du cou ld benutze den Befehl

public function handle(Event1 $event) { 
    Redis::publish('channel1', json_encode(['foo' => 'bar'])); 
} 
+0

Erhalte einen Fehler, wenn 'Redis :: publish()' aufgerufen wird. Ich habe "Illuminieren/Redistieren": "~ 5.1" und "Predis/Predis": "~ 1.0" in meiner composer.json und auch "Redis verwenden" in der Listener-Datei. Der Vendor-Ordner enthält illuminate/redis-Verzeichnis und auch Illuminate \ Redis \ RedisServiceProvider in meiner bootstrap/app.php-Datei. – LJP

+0

Bitte teilen Sie Ihre 'app.php' Datei und haben Sie versucht,' Composer Dump-Autoload'? – linktoahref

+0

'$ app-> configure ('broadcasting'); $ app-> registrieren (App \ Providers \ EventServiceProvider :: class); $ app-> registrieren (Illuminate \ Redis \ RedisServiceProvider :: Klasse); ' – LJP

Verwandte Themen