zeromq — отправка сообщений с использованием php с системой обмена сообщениями voryx Thruway WAMP

Я пытаюсь создать систему уведомлений. Я использую SimpleWsServer.php пример сервера. Я хочу отправить уведомление в браузер пользователя, когда задача будет выполнена на сервере. Это должно быть сделано с помощью PHP, и я не могу найти учебник, где это показано. Кажется, что во всех руководствах показаны сценарии tavendo / AutobahnJS для отправки и получения, пока PHP-сервер работает как менеджер.

Можно ли отправить сообщение с использованием php-скрипта подписчикам?

3

Решение

Astro,

Это на самом деле довольно просто и может быть достигнуто несколькими различными способами. Мы разработали Thruway Client для имитации клиента AutobahnJS, поэтому большинство простых примеров будут переведены напрямую.

Я предполагаю, что вы хотите публиковать с веб-сайта (не долго работает скрипт PHP).

На вашем сайте PHP вы захотите сделать что-то вроде этого:

$connection = new \Thruway\Connection(
[
"realm"   => 'com.example.astro',
"url"     => 'ws://demo.thruway.ws:9090', //You can use this demo server or replace it with your router's IP
]
);

$connection->on('open', function (\Thruway\ClientSession $session) use ($connection) {

//publish an event
$session->publish('com.example.hello', ['Hello, world from PHP!!!'], [], ["acknowledge" => true])->then(
function () use ($connection) {
$connection->close(); //You must close the connection or this will hang
echo "Publish Acknowledged!\n";
},
function ($error) {
// publish failed
echo "Publish Error {$error}\n";
}
);
});

$connection->open();

И клиент javascript (использующий AutobahnJS) будет выглядеть так:

var connection = new autobahn.Connection({
url: 'ws://demo.thruway.ws:9090',  //You can use this demo server or replace it with your router's IP
realm: 'com.example.astro'
});

connection.onopen = function (session) {

//subscribe to a topic
function onevent(args) {
console.log("Someone published this to 'com.example.hello': ", args);
}

session.subscribe('com.example.hello', onevent).then(
function (subscription) {
console.log("subscription info", subscription);
},
function (error) {
console.log("subscription error", error);
}
);
};

connection.open();

Я также создал plunker для стороны Javascript и работоспособный для стороны PHP.

7

Другие решения

Других решений пока нет …