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