askedio / laravel-ratchet
A Ratchet Server built for Laravel
Installs: 28 099
Dependents: 2
Suggesters: 0
Security: 0
Stars: 186
Watchers: 13
Forks: 47
Open Issues: 7
Requires
- php: >=7.1.0
- ext-zmq: *
- cboden/ratchet: ^0.4
- graham-campbell/throttle: ^7.0
- illuminate/console: ^5.5
- illuminate/support: ^5.5
- react/zmq: 0.2.*|0.3.*
README
This package enables you to create and run a fully functioning WebSocket server in your Laravel app. It can optionally receive messages broadcast over ZeroMQ.
Requirements
- PHP 7.1+
- Laravel 5.5+
- ZeroMQ
- ext-zmq for PHP
Installation
$ composer require askedio/laravel-ratchet
The service provider is loaded automatically in Laravel 5.5 using Package Autodiscovery.
Publish the vendor files so you can configure your server defaults.
$ php artisan vendor:publish --provider="Askedio\LaravelRatchet\Providers\LaravelRatchetServiceProvider"
Starting the Server
After completing installation, the quickest way to start a standard WebSocket server is simply by running:
$ php artisan ratchet:serve --driver=WsServer
This will run a simple example server based on src/Examples/Pusher.php
.
It's possible to create a WampServer or an IoServer also. Use the --help
switch on the command to find out more.
You should create your own server class inside your app
folder by extending one of the core Ratchet server classes: RatchetWsServer.php or RatchetWampServer.php.
Then update your config/ratchet.php
file to point to your server class
.
Use with Laravel Broadcasting
To use broadcasting in your Laravel app with the server you create, you will need a ZeroMQ broadcast driver for Laravel (e.g. this one).
You will also need to tell your Ratchet server to bind to a ZeroMQ socket. You can do this simply by passing the -z
option, i.e.:
$ php artisan ratchet:serve --driver=WsServer -z
This will connect to the socket you define in your config/ratchet.php
settings and listen for messages from ZeroMQ.
To handle messages published via ZeroMQ, simply add a public function onEntry($messages)
method to your server class. This will allow you to receive messages inside your Ratchet server instance and determine how to route them.