redbaron76 / Larapush

WebSocket and Push server for Laravel 4
MIT License
25 stars 7 forks source link

This package is still UNDER DEVELOPMENT but feel free to try it as you wish.

Larapush - WebSocket and Push server

a Ratchet and ZMQ implementation for Laravel 4.

ZMQ is required


Make sure to have ZMQ installed on your system before to try it. Install guide

How to install this package


// composer.json

{
    "require": {
        "redbaron76/larapush": "dev-master"
    }
}
// app/config/app.php

'providers' => array(

        ...

        'Redbaron76\Larapush\LarapushServiceProvider',
    ),

Then run composer update to install the new package.

How to use


1) Start the Larapush server

From the console just type php artisan larapush:serve (--port=8080) to rise the WebSocket/Ratchet server up.

2) Use the Larapush facade in your routes to trigger events server-side
// app/routes.php

Route::any('profile/{nickname}', ['as' => 'profile', function($nickname)
{
    Larapush::send(['message' => 'I watch you, '.$nickname.'!'], ['profileChannel'], 'profile.visit');

    return View::make('some.view');
}]);
3) Subscribe your client to channels and listen for events in the client-side

Server and client-side code

Results on browser

4) Laravel - Ratchet session sync

In order to have Laravel session synced with the Ratchet server one, YOU MUST use specific Larapush filters in your routes:

  1. Use 'before' => 'sessionRemove' wherever you perform a logout action.
  2. Use 'after' => 'sessionSync' wherever you perform a login action and in any authenticated route.

This will maintain your sessions in sync and you'll be able to perform a target Larapush::send().

Use of Larapush filters

Larapush.js - Pub/Sub js lib for Larapush


In order to make your dev life easier with Larapush, please give Larapush.js a try.

Follow my Twitter account @FFumis for any update.

TODO


  1. A logging (Monolog) system
  2. Client-to-client websocket communication with server authorization
  3. Automatic channel(s) subscription on joining routes
  4. ...and really open to any suggestion/contribution!! Please, ask!