soleon / sc-php
SocketCluster - PHP library for interacting with the SocketCluster.io
Installs: 26 926
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 3
Forks: 4
Open Issues: 2
Requires
- php: >=5.5.9
- textalk/websocket: 1.0.*
Requires (Dev)
- illuminate/broadcasting: 5.2.*
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~4.0
- pimple/pimple: ~3.0
Suggests
- laravel/framework: Framework Laravel (5.2.*)
This package is not auto-updated.
Last update: 2024-10-26 19:59:09 UTC
README
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.