{ return function ($request, $response) use($gifServer) { $gifServer($request, $response); $gifServer->addFrame(createGifFrame([''])); }; } $loop = React\EventLoop\Factory::create(); $socket = new React\Socket\Server($loop); $http = new React\Http\Server($socket); $gifServer = new React\Gifsocket\Server($loop); $messages = []; $addMessage = function ($message) use($gifServer, &$messages) { $messages[] = $message; if (count($messages) > 18) { $messages = array_slice($messages, count($messages) - 18); } $frame = createGifFrame($messages); $gifServer->addFrame($frame); }; $stdin = new React\Stream\Stream(STDIN, $loop); $stdin->on('data', function ($data) use($addMessage) { $messages = explode("\n", trim($data)); foreach ($messages as $message) { $addMessage($message); } }); $router = new React\Gifsocket\Router(['/' => sendEmptyFrameAfter($gifServer)]); $http->on('request', $router); echo "Webserver running on localhost:8080\n"; $socket->listen(8080); $loop->run();