2016-04-13 15 views
1

Laravel 5.1を5.2にアップデートしましたが、イベントはもう放送されていません。Laravel 5.2でRedisとSocket.ioでイベントブロードキャスト

私は、php 7とhhvm、Node 5.3.0、Redis 3.0.6のLaravel homesteadを使用しています。

レディスは正常に動作しています。 (私はRedis :: publishを試みました)。

私はイベントを発生させましたが、メッセージは表示されません。

Eventクラス

namespace App\Events; 

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

class UserSignedUp extends Event implements ShouldBroadcast 
{ 
    use SerializesModels; 

    public $username; 

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

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

ルート

Route::get('event', function() { 
    $data = [ 
     'event' => 'UserSignedUp', 
     'data' => [ 
      'username' => 'JohnDoe' 
     ] 
    ]; 

// Works fine 
    Redis::publish('test-channel', json_encode($data)); 

// It does not broadcast anything 
    event(new \App\Events\UserSignedUp('JohnDoe')); 
}); 

Socket.ioサーバ

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
var Redis = require('ioredis'); 
var redis = new Redis(); 

redis.subscribe('test-channel', function (err, count) { 
}); 

redis.on('message', function (channel, message) { 
    console.log('Message Recieved: ' + message); 

    message = JSON.parse(message); 

    io.emit(channel + ':' + message.event, message.data); 
}); 

http.listen(3000, function() { 
    console.log('Listening on Port 3000'); 
}); 

のEnv設定

CACHE_DRIVER=redis 
SESSION_DRIVER=redis 
QUEUE_DRIVER=redis 
BROADCAST_DRIVER=redis 

REDIS_HOST=127.0.0.1 
REDIS_PASSWORD=null 
REDIS_PORT=6379 

答えて

5

発射されるすべてのイベント、あなたを放送するために、Redisのキューにプッシュされますが、キュー内のジョブを解放する必要があります、あなたは

php artisan queue:listen ....

または

を使用することができます

php artisan queue:work

コマンド

+0

こんにちは!私はLaravel 5.3と同じ問題に直面しています。私は 'php artisan queue:work'と' php artisan queue:listen'を試しましたが、どれもうまくいきませんでした。 drdが 'イベント(new \ App \ Events \ TestEvent()); 'は'何もブロードキャストしません。その他の推奨事項はありますか? – KoKa