cravler/faye-app-bundle


Keywords
symfony, sockets, WebSockets, Node.js, pubsub, faye, Bayeux
License
MIT

Documentation

CravlerFayeAppBundle

This bundle depends on faye-app.

Installation

Step 1: Update your vendors by running

$ php composer.phar require cravler/faye-app-bundle:dev-master

Step 2: Enable the bundle

<?php
// app/AppKernel.php

public function registerBundles()
{
    $bundles = array(
        // ...

        new Cravler\FayeAppBundle\CravlerFayeAppBundle(),
    );
}

Step 3: Add routing

# app/config/routing.yml

cravler_faye_app:
    resource: "@CravlerFayeAppBundle/Resources/config/routing.yml"

Step 4: Include Javascript

To include the relevant javascript libraries necessary for FayeApp, add these to your root layout file.

<!-- .../Acme/DemoBundle/Resources/views/layout.html.twig -->

<script type="text/javascript" src="..."></script>
{{ faye_app_javascript() }}

Usage

Create entry-point

<?php
// .../Acme/DemoBundle/EntryPoint/Example.php

namespace Acme\DemoBundle\EntryPoint;

use Cravler\FayeAppBundle\EntryPoint\AbstractEntryPoint;

class Example extends AbstractEntryPoint
{
    public function getId()
    {
        return 'acme-demo.example';
    }
}

Register entry-point

<!-- .../Acme/DemoBundle/Resources/config/services.xml -->

<services>
    ...
    <service id="acme.demo.entry_point.example" class="Acme\DemoBundle\EntryPoint\Example">

        <call method="setEntryPointManager">
            <argument type="service" id="cravler_faye_app.service.entry_point_manager" />
        </call>

        <tag name="cravler_faye_app.entry_point" />
    </service>
    ...
</services>

Subscribing to channels

<script type="text/javascript">
    var exampleEntryPoint = FayeApp.createEntryPoint('acme-demo.example');

    var subscription = exampleEntryPoint.subscribe('/foo', function(message) {
        console.log('[foo] Handle message: ', message);
    });

    subscription.then(function() {
        console.log('[foo] Subscription is now active!');
    }, function(error) {
        console.log('[foo] Subscription problem: ' + error.message);
    });
</script>

Sending messages

<script type="text/javascript">
    var exampleEntryPoint = FayeApp.createEntryPoint('acme-demo.example');

   var publication = exampleEntryPoint.publish('/foo', { text: 'Hi there' });

   publication.then(function() {
       console.log('[foo] Message received by server!');
   }, function(error) {
       console.log('[foo] There was a problem: ' + error.message);
   });
</script>

Configuration

The default configuration for the bundle looks like this:

cravler_faye_app:
    example: false
    user_provider: false #security.user.provider.concrete.[provider_name]
    route_url_prefix: faye-app
    use_request_uri: false
    secret: ThisTokenIsNotSoSecretChangeIt
    app:
        scheme: ~
        host: 127.0.0.1
        port: ~
        mount: /pub-sub
        options: {}

License

This bundle is under the MIT license. See the complete license in the bundle:

LICENSE