soleon/sc-php

SocketCluster - PHP library for interacting with the SocketCluster.io

v1.0.2 2016-07-27 15:19 UTC

This package is not auto-updated.

Last update: 2024-10-26 19:59:09 UTC


README

Build Status Scrutinizer Code Quality Code Coverage Latest Stable Version License

PHP library for interacting with the SocketCluster.io

It's an unofficial client php for SocketCluster (Is an open source realtime WebSocket framework for Node.js from socketcluster.io for PHP 5.5.9+).

Contents

Installation

You can install this package by simply run this composer command:

composer require soleon/sc-php

Usage Basic

$optionsOrUri = 'wss://localhost:443/socketcluster/?servicekey=abc'

OR

$optionsOrUri = [
  'secure' => true,
  'host' => 'localhost',
  'port' => '443',
  'path' => '/socketcluster/',
  'query' => [
    'servicekey' => 'abc'
  ],
];

$websocket = \SocketCluster\WebSocket::factory($optionsOrUri);
$socket = new \SocketCluster\SocketCluster($websocket);

// Event Emit
$data = ['message' => 'FooBar'];
$socket->publish('CHANNEL_NAME', $data);

Integrations

Laravel Framework

Then, add this service provider in your providers array [app/config/app.php]:

SocketCluster\Providers\LaravelServiceProvider::class,

Then, add this Facade to your aliases array [app/config/app.php]:

'SocketCluster' => SocketCluster\Laravel\SCFacade::class

Next you have to copy the configuration to your connections array [app/config/broadcasting.php]:

/*
 * Set default broadcasting driver to socketcluster
 */
'default' => env('BROADCAST_DRIVER', 'socketcluster'),

'socketcluster' => [
    'driver' => 'socketcluster',
    'options' => [
      'secure' => true,
      'host' => 'localhost',
      'port' => '443',
      'path' => '/socketcluster/',
      'query' => [],
    ],
]

Usage Laravel

  • With Facade
SocketCluster::publish('ChannelName', ['message' => 'Test publish!!']);

With Event Listener

Add a custom broadcast event to your application example [app/events/PublishToSocketClusterEvent.php]:

namespace App\Events;

use App\Events\Event;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class PublishToSocketClusterEvent implements ShouldBroadcast
{
    use SerializesModels

    /**
     * Content Message
     * @var string
     */
    public $message;

    /**
     * Construct Event
     * @param string $message
     */
    public function __construct($message)
    {
        $this->message = $message;
    }

    /**
     * Get the channels the event should broadcast on.
     * @return array
     */
    public function broadcastOn()
    {
        return ['channelName'];
    }

    /**
     * Get the data to send.
     * @return array
     */
    public function broadcastWith()
    {
      return [
        'message' => $this->message
      ]
    }
}

Now to publish in your application simply fire the event:

event(new App\Events\PublishToSocketClusterEvent('Test publish!!'));

Pimple

Pimple is a simple PHP Dependency Injection Container

Examples of frameworks that use: Silex, Slim

Registering this service provider

$app->register(new SocketCluster\Providers\PimpleServiceProvider(), array(
    'socketcluster.options' => array(
      'secure' => true,
      'host' => 'localhost',
      'port' => '443',
      'path' => '/socketcluster/',
      'query' => [],
    )
));

Usage Pimple

$app['socketcluster']->publish('CHANNEL_NAME', $data);

Contribution

Support follows PSR-2 and PSR-4 PHP coding standards, and semantic versioning. Fork this project and make a pull request!

License

This project is free software distributed under the terms of the MIT License.