Ich verwende Workerman zusammen mit PHPSocketIO und versuchen herauszufinden, wie ich Daten regelmäßig an den angegebenen Server senden kann. Aus irgendeinem Grund kann ich es in Javascript perfekt machen, aber ich muss Benachrichtigungen von PHP an alle verbundenen Clients senden. Ich habe versucht, Stand-Alone-Funktion zu verwenden, um eine Verbindung zum Server herzustellen und über eine Standardnachricht zu benachrichtigen, aber aus irgendeinem Grund tut es nichts.Senden von Daten an alle Clients in regelmäßigen Abständen
<?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();