1. Go to this page and download the library: Download vankosoft/thruway-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
// src/ACME/AppBundle/Security/MyAuthorizationManager.php
use Thruway\Event\MessageEvent;
use Thruway\Event\NewRealmEvent;
use Thruway\Module\RealmModuleInterface;
use Thruway\Module\RouterModuleClient;
class MyAuthorizationManager extends RouterModuleClient implements RealmModuleInterface
{
/**
* Listen for Router events.
* Required to add the authorization module to the realm
*
* @return array
*/
public static function getSubscribedEvents()
{
return [
'new_realm' => ['handleNewRealm', 10]
];
}
/**
* @param NewRealmEvent $newRealmEvent
*/
public function handleNewRealm(NewRealmEvent $newRealmEvent)
{
$realm = $newRealmEvent->realm;
if ($realm->getRealmName() === $this->getRealm()) {
$realm->addModule($this);
}
}
/**
* @return array
*/
public function getSubscribedRealmEvents()
{
return [
'PublishMessageEvent' => ['authorize', 100],
'SubscribeMessageEvent' => ['authorize', 100],
'RegisterMessageEvent' => ['authorize', 100],
'CallMessageEvent' => ['authorize', 100],
];
}
/**
* @param MessageEvent $msg
* @return bool
*/
public function authorize(MessageEvent $msg)
{
if ($msg->session->getAuthenticationDetails()->getAuthId() === 'username') {
return true;
}
return false;
}
}
use Voryx\ThruwayBundle\Annotation\Register;
/**
*
* @Register("com.example.add")
*
*/
public function addAction($num1, $num2)
{
return $num1 + $num2;
}
public function call($value)
{
$client = $this->container->get('thruway.client');
$client->call("com.myapp.add", [2, 3])->then(
function ($res) {
echo $res[0];
}
);
}
use Voryx\ThruwayBundle\Annotation\Subscribe;
/**
*
* @Subscribe("com.example.subscribe")
*
*/
public function subscribe($value)
{
echo $value;
}
public function publish($value)
{
$client = $this->container->get('thruway.client');
$client->publish("com.myapp.hello_pubsub", [$value]);
}
use Voryx\ThruwayBundle\Annotation\Register;
/**
*
* @Register("com.example.addrpc", serializerEnableMaxDepthChecks=true)
*
*/
public function addAction(Post $post)
{
//Do something to $post
return $post;
}
use Voryx\ThruwayBundle\Annotation\Register;
/**
* @Register("com.example.addrpc", serializerEnableMaxDepthChecks=true, worker="posts")
*/
public function addAction(Post $post)
use Voryx\ThruwayBundle\Annotation\Worker;
/**
* @Worker("chat", maxProcesses="5")
*/
class ChatController
namespace App\Controller;
use Voryx\ThruwayBundle\Annotation\Register;
class TestController
{
/**
* @Register("com.example.add")
*/
public function addAction($num1, $num2)
{
return $num1 + $num2;
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.