Using Composer:
composer require adaojunior/laravel-postgresql-broadcast-driver
In your config/app.php file add the following provider to your service providers array:
'providers' => [
...
Adaojunior\PostgreSqlBroadcastDriver\BroadcastServiceProvider::class,
...
]
In your config/broadcasting.php file set the default driver to 'postgresql' and add the connection configuration like so:
'default' => 'postgresql',
'connections' => [
...
'postgresql' => [
'driver' => 'postgresql',
'connection' => env('BROADCAST_PG_DB','pgsql')
]
...
]
Add a custom broadcast event to your application like so:
namespace App\Events;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class Message extends Event implements ShouldBroadcast
{
protected $message;
public function __construct($message)
{
$this->message= $message;
}
public function broadcastOn()
{
return ['MessageChannel'];
}
public function broadcastWith()
{
return ['message' => $this->message];
}
}
Now to publish in your application simply fire the event:
event(new App\Events\Message('Test publish!!!'));
npm install pg-pubsub --save
// server.js
var PGPubsub = require('pg-pubsub');
var instance = new PGPubsub('postgres://homestead:secret@localhost/homestead';
instance.addChannel('MessageChannel', function (payload) {
console.log(payload);
});