2017-02-07 7 views
0

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(); 

Antwort

0

Da gibt es keine fertige Lösung in PHP, die mich verbinden und Anfrage WebSockets Server können alle Kunden zu informieren, haben wir beschlossen, mit clsssic JavaScript Pingpong und Abrufen von Daten zu regeln.

Verwandte Themen