Blame | Last modification | View Log | RSS feed
<?phpnamespace Ratchet\Http;use Ratchet\MessageComponentInterface;use Ratchet\ConnectionInterface;class HttpServer implements MessageComponentInterface {use CloseResponseTrait;/*** Buffers incoming HTTP requests returning a Guzzle Request when coalesced* @var HttpRequestParser* @note May not expose this in the future, may do through facade methods*/protected $_reqParser;/*** @var \Ratchet\Http\HttpServerInterface*/protected $_httpServer;/*** @param HttpServerInterface*/public function __construct(HttpServerInterface $component) {$this->_httpServer = $component;$this->_reqParser = new HttpRequestParser;}/*** {@inheritdoc}*/public function onOpen(ConnectionInterface $conn) {$conn->httpHeadersReceived = false;}/*** {@inheritdoc}*/public function onMessage(ConnectionInterface $from, $msg) {if (true !== $from->httpHeadersReceived) {try {if (null === ($request = $this->_reqParser->onMessage($from, $msg))) {return;}} catch (\OverflowException $oe) {return $this->close($from, 413);}$from->httpHeadersReceived = true;return $this->_httpServer->onOpen($from, $request);}$this->_httpServer->onMessage($from, $msg);}/*** {@inheritdoc}*/public function onClose(ConnectionInterface $conn) {if ($conn->httpHeadersReceived) {$this->_httpServer->onClose($conn);}}/*** {@inheritdoc}*/public function onError(ConnectionInterface $conn, \Exception $e) {if ($conn->httpHeadersReceived) {$this->_httpServer->onError($conn, $e);} else {$this->close($conn, 500);}}}