Exemplo n.º 1
0
date_default_timezone_set('Europe/Oslo');
$loop = LoopFactory::create();
$app = new \Ratchet\App('localhost', 8080, '127.0.0.1', $loop);
$handler = new \Monolog\Handler\StreamHandler('php://stdout', \Psr\Log\LogLevel::INFO);
$processor = new \Monolog\Processor\MemoryUsageProcessor();
$logger = new Monolog\Logger('socketty', array($handler), array($processor));
$authenticator = new BasicAuthenticator('username');
$authorizer = new BasicAuthorizer();
$enabledCommands = ['ssh', 'top', 'ping'];
$spawner = new CommandSpawner($enabledCommands);
$terminalFactory = new TerminalFactory($loop, $spawner);
$clientFactory = new ClientFactory($loop, $logger, $terminalFactory, $authorizer);
$socketty = new Socketty($logger, $loop, $clientFactory, $authenticator);
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
$handler = new MemcachedSessionHandler($memcached);
$sessionProvider = new SessionProvider($socketty, $handler, array('name' => 'CUSTOM_NAME'));
declare (ticks=1);
$sig_handler = function ($signal) use($socketty, $logger) {
    try {
        $logger->critical('Server was killed. Stopping new connections and closing existing connections now...');
        $socketty->allowNewConnections(false);
        $socketty->closeAll();
        $logger->critical('All connections now closed. Exiting...');
    } finally {
        exit;
    }
};
pcntl_signal(SIGTERM, $sig_handler);
$app->route('', $sessionProvider);
$app->run();