SocketCluster - PHP library for interacting with the SocketCluster.io
soleon/sc-php is a Laravel package for socketcluster - php library for interacting with the socketcluster.io.
It currently has 15 GitHub stars and 34.312 downloads on Packagist (latest version v1.0.2).
Install it with composer require soleon/sc-php.
Discover more Laravel packages by soleon
or browse all Laravel packages to compare alternatives.
Last updated
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+).
You can install this package by simply run this composer command:
composer require soleon/sc-php
$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);
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
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 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);
Support follows PSR-2 and PSR-4 PHP coding standards, and semantic versioning. Fork this project and make a pull request!
This project is free software distributed under the terms of the MIT License.