connectionManager = $connectionManager; } public function onOpen(ConnectionInterface $conn) { // TODO: Implement onOpen() method. } public function onClose(ConnectionInterface $conn) { dump("close connection"); } public function onError(ConnectionInterface $conn, \Exception $e) { // TODO: Implement onError() method. } public function onMessage(ConnectionInterface $connection, $message) { $payload = json_decode($message); if (json_last_error() === JSON_ERROR_NONE) { $message = new ControlMessage($payload, $connection, $this->connectionManager); $message->respond(); } else { if (! isset($connection->buffer)) { $connection->buffer = ''; } $connection->buffer .= $message; $message = new TunnelMessage($connection->buffer, $connection, $this->connectionManager); $message->respond(); } } }