/** * Performs the WebSocket HTTP hand-shake. * * @param HttpRequest $httpRequest * @return HttpResponse The HTTP response to send back to the browser. */ private function performHandshake(HttpRequest $httpRequest) { $req = new WebSocketRequest($httpRequest); if ($req->validate()) { $e = $this->createEvent(WebSocketServer::EVENT_HANDSHAKE); $e->request = $req; $this->notifyEventListeners($e); if (!$req->isRejected()) { $req->handshake(); } } $success = !$req->isRejected() && substr($req->getHttpResponse()->getStatus(), 0, 3) === "101"; fwrite($httpRequest->getStream(), $req->getHttpResponse()); return $success; }