Продублирую вопрос
habrahabr.ru/post/266931/#comment_8574827
Как отправить запрос с клиента и уведомить всех других подписчиков канала — это ясно.
Как поймать и обработать на сервере то, что было отослано клиентом — тоже понятно.
Это все делает
https://github.com/BrainBoxLabs/brain-socket.
А вот как сделать так, чтобы с сервера отправить сообщение в канал
Пример: кроном раз в минуту забирается результаты матчей с удаленного сервера. Записываются в базу.
Те, кто откроет страницу — им результаты покажутся из сгенерированной страницы.
Как уведомить тех, кто не обновлял страницу?
На реалплексоре Котерова такую задачу решали на раз-два, но таскать его и устанавливать за собой проблематичнее, чем установка того же BrainSocket из композера и запуск сервера.
я просто надеялся, что есть такой же механизм как в dklab.ru/lib/dklab_realplexor
------------------------------------------------------------------------
JAVASCRIPT: подписываемся на каналы, будем их прослушивать
------------------------------------------------------------------------
// Create Dklab_Realplexor client.
var realplexor = new Dklab_Realplexor(
"rpl.YourSite.com", // Realplexor's engine URL; must be a sub-domain
"demo_" // namespace
);
// подписка на сообщения отправленные мне лично
realplexor . subscribe(
"user_1", function (result, id) {
switch (result . type) {
case 'private':
console . log('Вам пришло личное сообщение:');
console . log('Отправитель: ' + result . sender);
console . log('Текст: ' + result . text);
break;
}
}
);
//подписка на сообщения для всех
realplexor . subscribe(
"all", function (result, id) {
switch (result.type) {
case 'alert':
alert(result.message);
break;
}
}
);
// Apply subscriptions. Сallbacks are called asynchronously on data arrival.
realplexor.execute();
------------------------------------------------------------------------
PHP отправка сообщений сразу в нужный канал
------------------------------------------------------------------------
// Create new API object to access Realplexor server.
require_once "Dklab/Realplexor.php";
$rpl = new Dklab_Realplexor("127.0.0.1", "10010", "demo_");
...
// отправим персональные сообщения пользователю с ID=1 и ID=2
$rpl->send(
["user_1", "user_2"], [
'type' => 'private',
'sender' => 'Admin',
'text' => 'Привет!',
]
);
// отправим всем
$rpl->send(
["all"], [
'type' => 'alert',
'message' => 'Окончен матч "Команда1:Команда2", результат матча - 0:2',
]
);