voryx / thruway
Thruway WAMP router core
Installs: 891 412
Dependents: 26
Suggesters: 2
Security: 0
Stars: 677
Watchers: 47
Forks: 117
Open Issues: 32
Requires
- php: >=7.1
- react/event-loop: ^1.0 || ^0.5 || ^0.4.3
- react/promise: ^2.3.0
- thruway/client: ^0.5.0
- thruway/ratchet-transport: ^0.5.0
- voryx/thruway-common: ^1.0.5
Requires (Dev)
- phpunit/phpunit: ^8
- thruway/pawl-transport: ^0.5.0
- thruway/raw-socket-transport: ^0.5.0
- dev-master
- 0.6.1
- 0.6.0
- 0.5.x-dev
- 0.5.4
- 0.5.3
- 0.5.2
- 0.5.1
- 0.5.0
- 0.4.x-dev
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.x-dev
- 0.3.10
- 0.3.9
- 0.3.8
- 0.3.7
- 0.3.6
- 0.3.5
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.x-dev
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1
- dev-hooks
- dev-issue287
- dev-ratchet-0.4
- dev-internal_client_schedule
This package is auto-updated.
Last update: 2024-12-18 13:10:24 UTC
README
Thruway
Thruway is an open source client and router implementation of WAMP (Web Application Messaging Protocol), for PHP. Thruway uses an event-driven, non-blocking I/O model (reactphp), perfect for modern real-time applications.
Supported WAMP Features
Basic Spec read more
- Publish and Subscribe
- Remote Procedure Calls
- Websocket Transport
- Internal Transport*
- JSON serialization
Advanced Spec read more
- RawSocket Transport
- Authentication
- WAMP Challenge-Response Authentication
- Custom Authentication Methods
- Authorization
- Publish & Subscribe
- Subscriber Black and Whitelisting
- Publisher Exclusion
- Publisher Identification
- Subscriber Meta Events
- Event History*
- Subscription Matching
- Prefix matching
- Remote Procedure Calls
- Caller Identification
- Progressive Call Results
- Distributed Registrations & Calls*
- Caller Exclusion
- Canceling Calls
* Thruway specific features
Requirements
Thruway is only supported on PHP 5.6 and up.
Quick Start with Composer
Create a directory for the test project
$ mkdir thruway
Switch to the new directory
$ cd thruway
Download Composer more info
$ curl -sS https://getcomposer.org/installer | php
Download Thruway and dependencies
$ php composer.phar require voryx/thruway
If you're going to also use the Thruway Client install a client transport. You'll need this to run the examples
$ php composer.phar require thruway/pawl-transport
Start the WAMP router
$ php vendor/voryx/thruway/Examples/SimpleWsRouter.php
Thruway is now running on 127.0.0.1 port 9090
PHP Client Example
<?php require __DIR__ . '/vendor/autoload.php'; use Thruway\ClientSession; use Thruway\Peer\Client; use Thruway\Transport\PawlTransportProvider; $client = new Client("realm1"); $client->addTransportProvider(new PawlTransportProvider("ws://127.0.0.1:9090/")); $client->on('open', function (ClientSession $session) { // 1) subscribe to a topic $onevent = function ($args) { echo "Event {$args[0]}\n"; }; $session->subscribe('com.myapp.hello', $onevent); // 2) publish an event $session->publish('com.myapp.hello', ['Hello, world from PHP!!!'], [], ["acknowledge" => true])->then( function () { echo "Publish Acknowledged!\n"; }, function ($error) { // publish failed echo "Publish Error {$error}\n"; } ); // 3) register a procedure for remoting $add2 = function ($args) { return $args[0] + $args[1]; }; $session->register('com.myapp.add2', $add2); // 4) call a remote procedure $session->call('com.myapp.add2', [2, 3])->then( function ($res) { echo "Result: {$res}\n"; }, function ($error) { echo "Call Error: {$error}\n"; } ); }); $client->start();
Javascript Clients
You can also use AutobahnJS or any other WAMPv2 compatible client.
Here are some [examples] (https://github.com/tavendo/AutobahnJS#show-me-some-code)
Here's a plunker that will allow you to run some tests against a local router
For AngularJS on the frontend, use the Angular WAMP wrapper.