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