public function testRequestEvent() { $io = new ServerStub(); $i = 0; $server = new Server($io); $server->on('request', function ($conn, $request, $response) use(&$i) { $i++; $this->assertInstanceOf('ExpressiveAsync\\Test\\ConnectionStub', $conn); $this->assertInstanceOf('ExpressiveAsync\\ServerRequest', $request); $this->assertSame('/', $request->getUri()->getPath()); $this->assertSame('GET', $request->getMethod()); $this->assertSame('127.0.0.1', $request->getRemoteAddress()); $this->assertInstanceOf('ExpressiveAsync\\Response', $response); }); $conn = new ConnectionStub(); $io->emit('connection', array($conn)); $data = $this->createGetRequest(); $conn->emit('data', array($data)); $this->assertSame(1, $i); }
$httpServer = new Server($socketServer); $serviceManager->setFactory('EventLoop', function () use($eventLoop) { return $eventLoop; }); $serviceManager->setInvokableClass('Zend\\Expressive\\Router\\RouterInterface', 'Zend\\Expressive\\Router\\FastRouteRouter'); $router = new \Zend\Expressive\Router\FastRouteRouter(); $router->addRoute(new \Zend\Expressive\Router\Route('/', function ($request, $response) use($eventLoop) { echo 'Home executed' . PHP_EOL; return new Diactoros\Response\HtmlResponse('Hello World.'); }, ['GET'], 'home')); $router->addRoute(new \Zend\Expressive\Router\Route('/deferred', function ($request, $response) use($eventLoop) { // create a request, wait 1-5 seconds and then return a response. $deferred = new Deferred(); $eventLoop->addTimer(rand(1, 5), function () use($deferred) { echo 'Timer executed' . PHP_EOL; $deferred->resolve(new Diactoros\Response\HtmlResponse('Deferred response.')); }); return new \ExpressiveAsync\DeferredResponse($deferred->promise()); }, ['GET'], 'deferred')); $router->addRoute(new \Zend\Expressive\Router\Route('/form', function ($request, $response) use($eventLoop) { echo "Form post received" . PHP_EOL; $params = $request->getParsedBody(); return new Diactoros\Response\HtmlResponse("Hi {$params['name']}"); }, ['POST'], 'form')); $application = new Application($router, $serviceManager, function ($request, $response) { echo 'final handler was called.' . PHP_EOL; return new Diactoros\Response\HtmlResponse('Not Found.', 404); }); $httpServer->on('request', new ExpressiveAsync\ExpressiveConnectionHandler($application)); $socketServer->listen('10091'); $eventLoop->run();
$serviceManager->setFactory('EventLoop', function () use($eventLoop) { return $eventLoop; }); $serviceManager->setInvokableClass('Zend\\Expressive\\Router\\RouterInterface', 'Zend\\Expressive\\Router\\FastRouteRouter'); $router = new \Zend\Expressive\Router\FastRouteRouter(); $router->addRoute(new \Zend\Expressive\Router\Route('/', function ($request, $response) use($eventLoop) { echo 'Home executed' . PHP_EOL; return new Diactoros\Response\HtmlResponse('Hello World.'); }, ['GET'], 'home')); $router->addRoute(new \Zend\Expressive\Router\Route('/deferred', function ($request, $response) use($eventLoop) { // create a request, wait 1-5 seconds and then return a response. $deferred = new Deferred(); $eventLoop->addTimer(rand(1, 5), function () use($deferred) { echo 'Timer executed' . PHP_EOL; $deferred->resolve(new Diactoros\Response\HtmlResponse('Deferred response.')); }); return new \ExpressiveAsync\DeferredResponse($deferred->promise()); }, ['GET'], 'deferred')); $router->addRoute(new \Zend\Expressive\Router\Route('/form', function ($request, $response) use($eventLoop) { echo "Form post received" . PHP_EOL; $params = $request->getParsedBody(); return new Diactoros\Response\HtmlResponse("Hi {$params['name']}"); }, ['POST'], 'form')); $application = new Application($router, $serviceManager, function ($request, $response) { echo 'final handler was called.' . PHP_EOL; return new Diactoros\Response\HtmlResponse('Not Found.', 404); }); $connectionHandler = new ExpressiveAsync\ExpressiveConnectionHandler($application); $httpServer->on('request', $connectionHandler); $socketServer->listen('10091'); $eventLoop->run();