Exemple #1
0
 /**
  * {@inheritdoc}
  */
 public function onMessage(ConnectionInterface $from, $msg, IoServer $server)
 {
     if (true !== $from->httpHeadersReceived) {
         try {
             if (null === ($request = $this->_reqParser->onMessage($from, $msg, $server))) {
                 return;
             }
         } catch (\OverflowException $oe) {
             return $this->close($from, 413);
         }
         $from->httpHeadersReceived = true;
         return $this->_httpServer->onOpen($from, $request);
     }
     $this->_httpServer->onMessage($from, $msg, $server);
 }
 /**
  * This method will be invoked when a new message, that has to be processed,
  * came in.
  *
  * @param \Ratchet\ConnectionInterface $from The connection that has been established
  * @param string                       $msg  The message itself
  *
  * @return void
  * @see \Ratchet\MessageInterface::onMessage()
  */
 public function onMessage(ConnectionInterface $from, $msg)
 {
     if (true === $from->WebSocket->established) {
         return $from->WebSocket->version->onMessage($this->connections[$from], $msg);
     }
     if (isset($from->WebSocket->request)) {
         $from->WebSocket->request->getBody()->write($msg);
     } else {
         try {
             if (null === ($request = $this->reqParser->onMessage($from, $msg))) {
                 return;
             }
         } catch (\OverflowException $oe) {
             return $this->close($from, 413);
         }
         if (!$this->versioner->isVersionEnabled($request)) {
             return $this->close($from);
         }
         $from->WebSocket->request = $request;
         $from->WebSocket->version = $this->versioner->getVersion($request);
     }
     try {
         $response = $from->WebSocket->version->handshake($from->WebSocket->request);
     } catch (\UnderflowException $e) {
         return;
     }
     if (null !== ($subHeader = $from->WebSocket->request->getHeader('Sec-WebSocket-Protocol'))) {
         if ('' !== ($agreedSubProtocols = $this->getSubProtocolString($subHeader->normalize()))) {
             $response->setHeader('Sec-WebSocket-Protocol', $agreedSubProtocols);
         }
     }
     $response->setHeader('X-Powered-By', \Ratchet\VERSION);
     $from->send((string) $response);
     if (101 != $response->getStatusCode()) {
         return $from->close();
     }
     // locate handler and initialize it
     $handler = $this->locateHandler($request);
     $upgraded = $from->WebSocket->version->upgradeConnection($from, $handler);
     $this->connections->attach($from, $upgraded);
     $upgraded->WebSocket->established = true;
     return $handler->onOpen($upgraded);
 }