- Notifications
You must be signed in to change notification settings - Fork123
PHP Client and Router Library for Autobahn and WAMP (Web Application Messaging Protocol) for Real-Time Application Messaging
License
voryx/Thruway
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Thruway is an open source client and router implementation ofWAMP (Web Application Messaging Protocol), for PHP. Thruway uses an event-driven, non-blocking I/O model (reactphp), perfect for modern real-time applications.
Basic Specread more
- Publish and Subscribe
- Remote Procedure Calls
- Websocket Transport
- Internal Transport*
- JSON serialization
Advanced Specread 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
Thruway is only supported on PHP 5.6 and up.
Create a directory for the test project
$ mkdir thruway
Switch to the new directory
$ cd thruway
Download Composermore 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
<?phprequire__DIR__ .'/vendor/autoload.php';useThruway\ClientSession;useThruway\Peer\Client;useThruway\Transport\PawlTransportProvider;$client =newClient("realm1");$client->addTransportProvider(newPawlTransportProvider("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 failedecho"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();
You can also useAutobahnJS or any other WAMPv2 compatible client.
Here are some [examples] (https://github.com/tavendo/AutobahnJS#show-me-some-code)
Here's aplunker that will allow you to run some tests against a local router
For AngularJS on the frontend, use theAngular WAMP wrapper.
About
PHP Client and Router Library for Autobahn and WAMP (Web Application Messaging Protocol) for Real-Time Application Messaging
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.