type = $type; $this->data = $data; } public static function open($payload) { return new self(self::OPEN, $payload); } public static function pong($payload = '') { return new self(self::PONG, $payload); } public static function ping() { return new self(self::PING); } public static function message($payload) { return new self(self::MESSAGE, $payload); } public static function fromString(string $packet) { return new self(substr($packet, 0, 1), substr($packet, 1) ?: ''); } public function toString() { return $this->type . $this->data; } }