Skip to content

Latest commit

History

44 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

PHP WebSocket Asynchronous Queue library

Usage with SurrealDB

Examples

useWanick\WebSocketQueue\Drivers\SurrealDriver;
// link to RCP SurrealDB$surreal = newSurrealDriver('wss://hostname:8080/rcp');
if ($surreal) {
$surreal->use($config['ns'], $config['db'])
->signin([
"user" => $config['user'],
"pass" => $config['pass'],
], function($resulr, $error) {
// .... your code 
})
->query('SELECT * FROM people WHERE ago > $ago', ['ago' => 18], function($result, $error) {
// .... your codeprint_r($result[0]);
})->exec();
}

Usage with Nats.io NATS

useWanick\WebSocketQueue\Drivers\NatsDriver;
// link to NATS Connection$nats = newNatsDriver('wss://nats.server.com:8080/nats');
if ($nats) {
$nats
->pub("EVENT_NAME", ['event' => 'test', 'data' => 123])
->pub("EVENT_NAME", ['event' => 'test', 'data' => 234])
->exec();
}

Example listening

useWanick\WebSocketQueue;
$queue = newWebSocketQueue\Queue();
$surreal = newSurrealDriver($url);
// this $surreal use + signin $nats = newNatsDriver($url);
$nats->sub('ON-YOUR-CUSTOM-EVENT', null, function(string$result) use($surreal) {
$data = json_decode($result, true); // if you write in JSON format to NATSswitch ($data['action']) {
case'alert':
$surreal->query('UPDATE table_name SET field = $value WHERE id = $id', [
'id' => $data['id'],
'value' => 1,
]);
// Add "->exec()", if you want saving right now // $queue->wait execute this query on loopbreak;
}
});
// can use// $surreal->live('table_name' ... for all table event$surreal->liveQuery('SELECT * FROM table_name WHERE field > $max', [ 'max' => 10],
function ($action, $result) use($nats) {
switch ($action) {
case'UPDATE':
$nats->pub("ON-YOUR-CUSTOM-EVENT", ['action' => 'alert', 'id' => $result['id']]);
// can be ->exec()break;
default:
// no action CLOSE, CREATE, CONNECT, DELETE// use CONNECT - for saving queryUuid for use liveListener or killbreak;
}
});
$queue->registrySocket($surreal);
$queue->registrySocket($nats);
// Locked loop - and example max work time execute$queue->wait(fn($s) => (microtime(1) - $s < $max_work_time));

About

PHP Library for read write Multiple Websocket Queue

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages