<?php 
    require dirname(__DIR__) . '/vendor/autoload.php'; 
 
    $loop   = React\EventLoop\Factory::create(); 
    $pusher = new MyApp\Pusher; 
 
    // Listen for the web server to make a ZeroMQ push after an ajax request 
    $context = new React\ZMQ\Context($loop); 
    $pull = $context->getSocket(ZMQ::SOCKET_PULL); 
    $pull->bind('tcp://127.0.0.1:5555'); // Binding to 127.0.0.1 means the only client that can connect is itself 
    $pull->on('message', array($pusher, 'onServerPush')); 
 
    // Set up our WebSocket server for clients wanting real-time updates 
    $webSock = new React\Socket\Server($loop); 
    $webSock->listen(82, '0.0.0.0'); // Binding to 0.0.0.0 means remotes can connect 
    $webServer = new Ratchet\Server\IoServer( 
        new Ratchet\Http\HttpServer( 
            new Ratchet\WebSocket\WsServer( 
                new Ratchet\Wamp\WampServer( 
                    $pusher 
                ) 
            ) 
        ), 
        $webSock 
    ); 
 
    $loop->run(); 
 
 |