public Socket createSocket(WebSocketListener listener) throws IOException, UnsuccessfulRequestException {
        Request createRequest = new Request.Builder()
                .url(this.httpUrl + "create")
                .header("User-Agent", this.userAgent)
                .build();

        String id;
        try (Response response = makeHttpRequest(createRequest)) {
            if (response.code() != 201) {
                throw new UnsuccessfulRequestException(response);
            }

            id = Objects.requireNonNull(response.header("Location"));
        }

        Request socketRequest = new Request.Builder()
                .url(this.wsUrl + id)
                .header("User-Agent", this.userAgent)
                .build();

        return new Socket(id, this.okHttp.newWebSocket(socketRequest, listener));
    }
Creates a new bytesocks instance

@param host the bytesocks host
@param userAgent the client user agent string
common/src/main/java/me/lucko/luckperms/common/http/BytesocksClient.java