redbaron76 / Larapush by Redbaron76

a Ratchet and ZMQ implementation for Laravel 4
1,046
25
7
Package Data
Maintainer Username: Redbaron76
Maintainer Contact: f.fumis@gmail.com (Fabio Fumis)
Package Create Date: 2014-09-03
Package Last Update: 2014-09-09
Language: PHP
License: MIT
Last Refreshed: 2024-11-11 15:10:13
Package Statistics
Total Downloads: 1,046
Monthly Downloads: 1
Daily Downloads: 1
Total Stars: 25
Total Watchers: 7
Total Forks: 7
Total Open Issues: 4

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!