You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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