mgsmus yazdısocket.on("YeniHasta:App\\Events\\EventYeniHasta", function(message){
console.log(message);
});
Bu şekilde konsolda çıktıyı görebiliyor musunuz?
Bir de broadcastOn kısmında PrivateChannel kullanmışsınız yani sayfaya üye girişi yapılması lazım değil mi?
Bir de arka planda kuyruk işlemcisi çalışıyor değil mi?
Mgsmus Üstadım kodlar aşağıdaki şekilde, terminal üzrinden php artisan queue:work yazdığım yazaman Event çalışıyor buraya kadar sorun yok ama
https://github.com/mgsmus/laravel-redis-socketio-test örneğinde olduğu gibi iki tarayıcı açıp tarayıcı pencerisinin birine
"http://207.154.247.100/alert?m=Merhaba" yazdığım zaman diğer pencerede bunu göremiyorum yani socket.io bu bildirimi yakalayamıyor. acaba nerde eksiklik yapıyoruz birde sen kontol edermisin sana zamahmet işin sonuna geldik sanırım bitmek üzere çok küçük bir yer kalmış gibi.
php artisan queue:work
[2018-02-15 16:27:18] Processed: App\Events\EventYeniHasta
[2018-02-15 16:27:18] Processing: App\Events\EventYeniHasta
[2018-02-15 16:27:18] Processed: App\Events\EventYeniHasta
[2018-02-15 16:27:18] Processing: App\Events\EventYeniHasta
[2018-02-15 16:27:18] Processed: App\Events\EventYeniHasta
[2018-02-15 16:27:30] Processing: App\Events\EventYeniHasta
[2018-02-15 16:27:30] Processed: App\Events\EventYeniHasta
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
<script>
var socket = io('http://207.154.247.100:3000');
socket.on('test-channel:App\\Events\\EventYeniHasta', function(data){
alert("deneme");
alert(data.message);
//$('#bildirim').text(parseInt($('#bildirim').text()) + parseInt(message.data));
});
</script>
routes/web.php
Route::get('alert', function () {
event(new \App\Events\EventYeniHasta(request('m')));
});
EventYeniHasta
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class EventYeniHasta implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Message
*
* @var mixed
*/
public $message;
/**
* Create a new event instance.
*
* @param mixed $message
*/
public function __construct($message)
{
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
//return new PrivateChannel('channel-name');
return ['test-channel'];
}
/**
* The event's broadcast name.
*
* @return string
*/
public function broadcastAs()
{
return 'alert';
}
}
socket.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var ioredis = require('ioredis');
var redis = new ioredis(6379);
redis.psubscribe('test-channel', function (err, count) {
console.log("Subscribed")
});
redis.on('message',
function (pattern, channel, message) {
message = JSON.parse(message);
io.emit(channel + ':' + message.event, message.data);
console.log(channel + ':' + message.event + ' ' + message.data.message);
}
);
http.listen(3000, function(){
console.log('Listening on Port 3000');
});