redbaron76/larapush

a Ratchet and ZMQ implementation for Laravel 4

0.1 2014-09-09 12:19 UTC

This package is not auto-updated.

Last update: 2024-12-17 04:31:53 UTC


README

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!