diff --git a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClient.java b/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClient.java index e6b9e8b..3b30238 100644 --- a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClient.java +++ b/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClient.java @@ -17,6 +17,10 @@ public interface ParseLiveQueryClient { class Factory { + public static ParseLiveQueryClient getClient() { + return new ParseLiveQueryClientImpl(); + } + public static ParseLiveQueryClient getClient(URI uri) { return new ParseLiveQueryClientImpl(uri); } diff --git a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientImpl.java b/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientImpl.java index b8970ed..f62e802 100644 --- a/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientImpl.java +++ b/ParseLiveQuery/src/main/java/com/parse/ParseLiveQueryClientImpl.java @@ -7,6 +7,8 @@ import org.json.JSONObject; import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; import java.util.concurrent.Callable; import java.util.concurrent.Executor; @@ -31,6 +33,10 @@ private int requestIdCount = 1; private boolean userInitiatedDisconnect = false; + /* package */ ParseLiveQueryClientImpl() { + this(getDefaultUri()); + } + /* package */ ParseLiveQueryClientImpl(URI uri) { this(uri, new TubeSockWebSocketClient.TubeWebSocketClientFactory(), Task.BACKGROUND_EXECUTOR); } @@ -45,6 +51,23 @@ this.webSocketClientCallback = getWebSocketClientCallback(); } + private static URI getDefaultUri() { + URL serverUrl = ParseRESTCommand.server; + if (serverUrl == null) return null; + String url = serverUrl.toString(); + if (serverUrl.getProtocol().equals("https")) { + url = url.replaceFirst("https", "wss"); + } else { + url = url.replaceFirst("http", "ws"); + } + try { + return new URI(url); + } catch (URISyntaxException e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage()); + } + } + @Override public SubscriptionHandling subscribe(ParseQuery query) { int requestId = requestIdGenerator();