soleon-leiloes / sc-php by moura137

SocketCluster - PHP library for interacting with the SocketCluster.io
24,614
14
3
Package Data
Maintainer Username: moura137
Maintainer Contact: renato@soleon.com.br (Renato Moura)
Package Create Date: 2016-07-05
Package Last Update: 2022-03-22
Language: PHP
License: MIT
Last Refreshed: 2024-04-23 03:03:53
Package Statistics
Total Downloads: 24,614
Monthly Downloads: 390
Daily Downloads: 10
Total Stars: 14
Total Watchers: 3
Total Forks: 4
Total Open Issues: 2

SocketCluster - PHP

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.