public function execute(InputInterface $input, OutputInterface $output) { /** * @var \Symfony\Component\Console\Helper\FormatterHelper */ $formatter = $this->getHelper('formatter'); $output->writeln($formatter->formatSection('IO', 'Start development server')); // $loop = \React\EventLoop\Factory::create(); $bridgeName = $input->getOption('bridge'); switch (strtolower($bridgeName)) { case 'phalcony': $bridge = new Phalcony(); break; case 'hello': default: $bridge = new SimpleBridge(); break; } $bridge->on('open', function (ConnectionInterface $conn, RequestInterface $request = null) use(&$formatter, $output) { $section = $formatter->formatSection('IO', 'Connection is open from ' . $request->getHost() . ' on ' . date('h:i:s') . ' : ' . $request->getUrl()); $output->writeln($section); }); $bridge->on('close', function (ConnectionInterface $conn, $timer) use(&$formatter, $output) { $output->writeln($formatter->formatSection('IO', sprintf('Connection is closed. Request completed %.4F sec.', $timer))); }); $bridge->on('error', function (Exception $e) use(&$formatter, $output) { $output->writeln($formatter->formatBlock(array('[App]', $e->getMessage(), 'in the ' . $e->getFile() . ' file on ' . $e->getLine() . ' line'), 'error')); }); $listen = $input->getOption('listen'); $port = $input->getOption('port'); $server = IoServer::factory(new HttpServer($bridge), $port, $listen); $server->run(); }
public function execute(InputInterface $input, OutputInterface $output) { /** * @var \Symfony\Component\Console\Helper\FormatterHelper */ $formatter = $this->getHelper('formatter'); $output->writeln($formatter->formatSection('IO', 'Start development server')); $bridgeName = $input->getOption('bridge'); switch (strtolower($bridgeName)) { case 'phalcony': $bridge = new Phalcony(); break; case 'hello': default: $bridge = new SimpleBridge(); break; } $bridge->on('error', function (Exception $e) use(&$formatter, $output) { $output->writeln($formatter->formatBlock(array('[App]', $e->getMessage(), 'in the ' . $e->getFile() . ' file on ' . $e->getLine() . ' line'), 'error')); }); $listen = $input->getOption('listen'); $port = $input->getOption('port'); $count = $input->getOption('count'); for ($i = 0; $i < $count; $i++) { $this->newWorker($output, $formatter, $listen, $port + $i, clone $bridge); } $loop = Factory::create(); $loop->addPeriodicTimer(1, function () use(&$output) { $output->writeln('Tick tak, bitch <3'); }); $loop->run(); }