public function onOpen(ConnectionInterface $from, RequestInterface $request = null) { if (empty($request)) { $resp = new Response(400); $from->send((string) $resp); $from->close(); return; } // Session management $saveHandler = $this->_handler; $id = $request->getCookie(ini_get('session.name')); if (empty($id)) { $id = sha1(uniqid() . mt_rand()); } // Crappy workaround for sessions - don't know why they are not saved // @see https://github.com/ratchetphp/Ratchet/blob/master/src/Ratchet/Session/SessionProvider.php if (isset($this->sessions[$id])) { $from->Session = $this->sessions[$id]; } else { $from->Session = new Session(new VirtualSessionStorage($saveHandler, $id, $this->_serializer)); $this->sessions[$id] = $from->Session; } if (ini_get('session.auto_start')) { $from->Session->start(); } $this->onRequest($from, $request); }
/** * {@inheritdoc} */ public function onOpen(ConnectionInterface $conn, RequestInterface $request = null) { if (null === $request || null === ($id = $request->getCookie(ini_get('session.name')))) { $saveHandler = $this->_null; $id = ''; } else { $saveHandler = $this->_handler; } $conn->Session = new Session(new VirtualSessionStorage($saveHandler, $id, $this->_serializer)); if (ini_get('session.auto_start')) { $conn->Session->start(); } return $this->_app->onOpen($conn, $request); }
protected function onRequest(GuzzleRequest $request) { if (null === ($id = $request->getCookie(ini_get('session.name')))) { $saveHandler = new NullSessionHandler(); $id = ''; } else { $saveHandler = $this->saveHandler; } $serialClass = "Ratchet\\Session\\Serialize\\{$this->toClassCase(ini_get('session.serialize_handler'))}Handler"; // awesome/terrible hack, eh? if (!class_exists($serialClass)) { throw new \RuntimeException('Unable to parse session serialize handler'); } $serializer = new $serialClass(); $this->session = new Session(new VirtualSessionStorage($saveHandler, $id, $serializer)); if (ini_get('session.auto_start')) { $this->session->start(); } }
/** * Get a cookie value by name * * @param string $name Cookie to retrieve * * @return null|string */ public function getCookie($name) { return $this->wrapped->getCookie($name); }