socket = $socketConnection; $this->proxyManager = $proxyManager; $this->socket->on('message', function (Message $message) { $decodedEntry = json_decode($message); $this->emit($decodedEntry->event ?? '', [$decodedEntry->data]); if (method_exists($this, $decodedEntry->event ?? '')) { call_user_func([$this, $decodedEntry->event], $decodedEntry->data); } }); } public function authenticated($data) { $this->clientId = $data->client_id; } public function createProxy($data) { $this->proxyManager->createProxy($this->clientId, $data); } public function createTcpProxy($data) { $this->proxyManager->createTcpProxy($this->clientId, $data); } public function authenticate(string $sharedHost, string $subdomain) { $this->socket->send(json_encode([ 'event' => 'authenticate', 'data' => [ 'type' => 'http', 'host' => $sharedHost, 'subdomain' => empty($subdomain) ? null : $subdomain, ], ])); } public function authenticateTcp(int $port) { $this->socket->send(json_encode([ 'event' => 'authenticate', 'data' => [ 'type' => 'tcp', 'port' => $port, ], ])); } public function ping() { $this->socket->send(json_encode([ 'event' => 'pong', ])); } }