NOTE - This repository is deprecated, future releases will only be made for critical bugs and security vulnerabilities. Use Pawl instead.
This package provides a PHP client that can send messages to a websocket server utilizing the WAMPv1 protocol. Listening for replies is not supported at this time.
Supported functions:
- prefix
- call
- publish
- event
You can directly create a Gos\Component\WebSocketClient\Wamp\ClientInterface
instance by creating a new Gos\Component\WebSocketClient\Wamp\Client
object. The constructor has two mandatory requirements; the server host and port. You may review the Client class constructor
to see all arguments.
<?php
use Gos\Component\WebSocketClient\Wamp\Client;
$client = new Client('127.0.0.1', 8080);
A Gos\Component\WebSocketClient\Wamp\ClientFactoryInterface
is available to create client instances as well. The default Gos\Component\WebSocketClient\Wamp\ClientFactory
supports a PSR-3 logger and will automatically inject it into the client if one is present.
<?php
use Gos\Component\WebSocketClient\Wamp\ClientFactory;
$factory = new ClientFactory(['host' => '127.0.0.1', 'port' => 8080]);
$client = $factory->createConnection();
Once you have created a client, you can connect and interact with your websocket server.
<?php
use Gos\Component\WebSocketClient\Wamp\ClientFactory;
$factory = new ClientFactory(['host' => '127.0.0.1', 'port' => 8080]);
$client = $factory->createConnection();
$sessionId = $client->connect();
// Establish a prefix on server
$client->prefix('calc', 'http://example.com/simple/calc#');
// You can send an arbitrary number of arguments
$client->call('calc', 12, 14, 15);
$data = [0, 1, 2];
// Or an array
$client->call('calc', $data);
$exclude = [$sessionId]; // No sense in sending the payload to ourselves
$eligible = []; // List of other clients ids that are eligible to receive this payload
$client->publish('topic', '', $exclude, $eligible);
// Publish an event
$client->event('topic', '');
$client->disconnect();
This software is distributed under MIT License. See LICENSE for more info.