Bunların hepsini yaptım, Node Js ve socket io çalışıyor, Redis çalışıyor, AppServiceProvider içindeki Broadcast claslarını aktifleştirdim buralarda sorun yok , kodlarımı tekrar paylaşıyorum bir yerde atladığım bir olay var ama bulamıyorum, terminalde php artisan queue:work yazdım herhangi bir cevap alamadım ekran bekledi durdu. sanırım bırakacam vazgeçecem bu işten :)) sonuna kadar gelip küçük bir hata yüzünden vazgeçmeyeyeyim dedim son olarak sizlerin onayına sunuyorum. hepinize saygılar.
EventYeniHasta.php
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class EventYeniHasta implements ShouldBroadcast
{
use SerializesModels;
public $message;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct($message)
{
$this->message = $message;
}
/**
* Get the channels the event should broadcast on.
*
* @return Channel|array
*/
public function broadcastOn()
{
// return new PrivateChannel('statusChanged');
return ['test-channel'];
}
}
PostController@add methodu
namespace App\Http\Controllers;
use App\Events;
use App\Transformers\PostTransformer;
use App\Events\EventYeniHasta;
use Illuminate\Http\Request;
use App\Post;
use Illuminate\Support\Facades\Auth;
class PostController extends Controller
{
public function add(Request $request, Post $post)
{
event(new EventYeniHasta('Yeni Hasta Eklendi'));
$this->validate($request,[
'tc' => 'required|min:10',
'adi' => 'required',
'soyadi' => 'required'
]);
$post=$post->create([
'user_id' => Auth::user()->id,
'tc' => $request->tc,
'adi' => $request->adi,
'soyadi' => $request->soyadi,
]);
$response =fractal()
->item($post)
->transformWith(new PostTransformer)
->toArray();
return response()->json($response,201);
}
socket.js
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');
});
master.blade.php
<div id="bildirim">Uyarı Burada Çıkacak</div>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.3/socket.io.js"></script>
<script type="text/javascript">
var socket = io('http://207.154.247.100:3000');
socket.on("test-channel:App\\Events\\EventYeniHasta", function(message){
console.log("Merhaba");
alert("deneme");
//$('#bildirim').text(parseInt($('#bildirim').text()) + parseInt(message.data));
});
</script>
.env
BROADCAST_DRIVER=redis
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=redis