Merhaba,
laravel-echo-server.json:
{
"authHost": "http://localhost",
"authEndpoint": "/broadcasting/auth",
"clients": [],
"database": "redis",
"databaseConfig": {
"redis": {},
"sqlite": {
"databasePath": "/database/laravel-echo-server.sqlite"
}
},
"devMode": true,
"host": null,
"port": "6001",
"protocol": "http",
"socketio": {},
"secureOptions": 67108864,
"sslCertPath": "",
"sslKeyPath": "",
"sslCertChainPath": "",
"sslPassphrase": "",
"subscribers": {
"http": true,
"redis": true
},
"apiOriginAllow": {
"allowCors": true,
"allowOrigin": "*",
"allowMethods": "GET, POST",
"allowHeaders": "Origin, Content-Type, X-Auth-Token, X-Requested-With, Accept, Authorization, X-CSRF-TOKEN, X-Socket-Id"
}
}
.env
BROADCAST_DRIVER=redis
CACHE_DRIVER=database
QUEUE_CONNECTION=database
SESSION_DRIVER=database
SESSION_LIFETIME=120
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
resources/bootstrap.js:
import Echo from 'laravel-echo';
window.Echo = new Echo({
broadcaster: 'socket.io',
host: window.location.hostname + ":6001"
});
Sonrasında npm run dev yapıp
webpack.mix.js:
mix.js('resources/js/bootstrap.js', 'public/js');
Bunun public kısma geçmesini sağladım.
deneme.blade.php
<html lang="TR">
<head>
<meta charset="utf-8">
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.1/css/bootstrap.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
<div>
<label>Hooppp</label>
</div>
<div id="1">
</div>
<script>
window.laravel_echo_port = "6001";
</script>
<script src="//{{ Request::getHost() }}:6001/socket.io/socket.io.js"></script>
<script src="{{asset('js/bootstrap.js')}}"></script>
<script>
window.Echo.channel('deneme')
.listen('.a', (data) => {
$("#1").append('<div class="alert alert-success">' + data.message + '</div>');
});
</script>
</body>
</html>
Route:
Route::get('/event', function (){
event(new \App\Events\EchoDeneme());
dd('başarılı');
});
Route::get('/event1', function (){
return view('deneme');
});
Event:
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class EchoDeneme implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the channels the event should broadcast on.
*
*/
public function broadcastOn()
{
return new Channel('deneme');
}
public function broadcastAs(): string
{
return 'a';
}
public function broadcastWith(): array
{
return ['message'=> 'denememsj1'];
}
}
Local tarafta her şey tıkır tıkır çalışıyor. Sunucu tarafında 6001/socket.io/socket.io.js bu dosyayı açamıyorum. Pending kısmında kalıyor. Port mu kapalı diye düşündüm ama aklıma başka bir şey gelmedi. Yardımcı olabilecek var mı ?
Ayrıca localde:
//{{ Request::getHost() }}:6001/socket.io/socket.io.js başına // koymayınca çalışmıyor.