Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A bundle to use Pusher App
PHP
Branch: master

Merge pull request #31 from gregholland/master

Upgrade pusher library to >=2.2.1 which fixes a security exploit.
latest commit 61522a76b1
@laupiFrpar authored
Failed to load latest commit information.
Authenticator Missing use statement is avoided
Controller Initialized the `$responseData` variable
DependencyInjection Improved the quality as recommended by Sensio
Resources/config Fix order of service arguments to match Pusher class
Tests Scrutinizer Auto-Fixes
.gitignore
.travis.yml Removed the test on PHP 5.5
LICENSE Fix the end file
LopiPusherBundle.php Fix the end file
README.md Update README.md
composer.json Upgrade pusher library to >=2.2.1 which fixes a private channel secur…
phpunit.xml Fix the end file

README.md

LopiPusherBundle

Build Status SensioLabsInsight Latest Stable Version Latest Unstable Version Bitdeli Badge

This bundle let you use Pusher simply.

Pusher (Documentation) is a simple hosted API for adding realtime bi-directional functionality via WebSockets to web and mobile apps, or any other Internet connected device.

This bundle is under the MIT license.

Installation

Use the composer to install this bundle.

$ composer require laupifrpar/pusher-bundle

Then update your AppKernel.php file, and register the new bundle:

<?php

// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new Lopi\Bundle\PusherBundle\LopiPusherBundle(),
    // ...
);

Configuration

If you have not a Pusher account, thank you to sign up and make a note of your API key before continuing

General

This is the default configuration in yml:

# app/config/config.yml
lopi_pusher:
    app_id: <your_app_id>
    key: <your_key>
    secret: <your_secret>

    # Default configuration
    debug: false # true if you want use the debug of all requests
    host: http://api.pusherapp.com
    port: 80
    timeout: 30

    # Optional configuration
    auth_service_id: <the_auth_service_id> # optional if you want to use private or presence channels

By default, calls will be made over a non-encrypted connection. To change this to make calls over HTTPS:

# app/config/config.yml
lopi_pusher:
    host: https://api.pusherapp.com
    port: 443

Private and Presence channel authentication (optional)

If you'd like to use private or presence, you need to add an authorization service.

First, create an authorization service that implements Lopi\Bundle\PusherBundle\Authenticator\ChannelAuthenticatorInterface

<?php
// My/Bundle/AcmeBundle/Pusher/ChannelAuthenticator

namespace My\Bundle\AcmeBundle\Pusher

use Lopi\Bundle\PusherBundle\Authenticator\ChannelAuthenticatorInterface;

class ChannelAuthenticator implements ChannelAuthenticatorInterface
{
    public function authenticate($socketId, $channelName)
    {
        // logic here

        return true;
    }
}

Then include it's service id in the lopi_pusher auth_service_id configuration parameter.

Additionally, enable the route by adding the following to your app\config\routing.yml configuration:

# app\config\routing.yml
lopi_pusher:
    resource: "@LopiPusherBundle/Resources/config/routing.xml"
    prefix:   /pusher

In some symfony configurations, you may need to manually specify the channel_auth_endpoint: (not required in most setups)

<script type="text/javascript">
    Pusher.channel_auth_endpoint = "{{ path('lopi_pusher_bundle_auth') }}";
</script>

Use LopiPusherBundle

Get the pusher service

<?php
$pusher = $this->container->get('lopi_pusher.pusher');

See the pusher's documentation to use the pusher service

Reporting an issue or a feature request

Issues and feature requests are tracked in the Github issue tracker.

When reporting a bug, it may be a good idea to reproduce it in a basic project built using the Symfony Standard Edition to allow developers of the bundle to reproduce the issue by simply cloning it and following some steps.

Something went wrong with that request. Please try again.