Периодически отправлять данные всем клиентам

Я использую Workerman вместе с PHPSocketIO и пытаюсь выяснить, как я могу периодически отправлять данные на указанный сервер. По какой-то причине я отлично могу сделать это в Javascript, но мне нужно делать уведомления из PHP для всех подключенных клиентов. Я попытался использовать автономную функцию для подключения к серверу и уведомить его через стандартное «сообщение», но по какой-то причине это ничего не делает.

<?php

require_once __DIR__ . '/vendors/autoload.php';
use Workerman\Worker;
use PHPSocketIO\SocketIO;

static $_TERMINATE_TIME = 61;
static $_CHECK_DATA = 3;

$io = new SocketIO(1234);
$io->on('connection', function($socket){
    $socket->addedUser = false;
    echo 'New user connected' . PHP_EOL;
    $socket->broadcast->emit('message', array(
        'data'=> array('test' => 1, 'blah' => 2)
    ));
    $socket->on('message', function ($data)use($socket){
        $socket->broadcast->emit('message', array(
            'data' => array('test' => 1, 'blah' => 2)
        ));
    });
});

function HasData()
{
    echo 'Need to send server-side data to all clients ...' . PHP_EOL;
}

// Need to send notifications from the server every N seconds
\Workerman\Lib\Timer::add($_CHECK_DATA, 'HasData', null, true);
// Self-destruct server after K seconds
\Workerman\Lib\Timer::add($_TERMINATE_TIME, function() {Worker::stopAll();}, null, false);

Worker::runAll();

person Daniel Protopopov    schedule 07.02.2017    source источник


Ответы (1)


Поскольку в PHP нет готового решения, которое позволило бы мне подключиться и запросить сервер веб-сокетов для уведомления всех клиентов, мы решили остановиться на классическом пинг-понге JavaScript и извлечении данных.

person Daniel Protopopov    schedule 11.02.2017