11package io .socket .engineio .client ;
22
3- import io .socket .emitter .Emitter ;
4- import io .socket .engineio .client .transports .Polling ;
5- import io .socket .engineio .client .transports .PollingXHR ;
6- import io .socket .engineio .client .transports .WebSocket ;
7- import io .socket .engineio .parser .Packet ;
8- import io .socket .engineio .parser .Parser ;
9- import io .socket .parseqs .ParseQS ;
10- import io .socket .thread .EventThread ;
113import org .json .JSONException ;
124
13- import javax .net .ssl .HostnameVerifier ;
14- import javax .net .ssl .SSLContext ;
15- import java .net .Proxy ;
165import java .net .URI ;
176import java .net .URISyntaxException ;
18- import java .util .*;
7+ import java .util .ArrayList ;
8+ import java .util .Arrays ;
9+ import java .util .HashMap ;
10+ import java .util .LinkedList ;
11+ import java .util .List ;
12+ import java .util .Map ;
1913import java .util .concurrent .Executors ;
2014import java .util .concurrent .Future ;
2115import java .util .concurrent .ScheduledExecutorService ;
2216import java .util .concurrent .TimeUnit ;
2317import java .util .logging .Logger ;
2418
19+ import io .socket .emitter .Emitter ;
20+ import io .socket .engineio .client .transports .Polling ;
21+ import io .socket .engineio .client .transports .PollingXHR ;
22+ import io .socket .engineio .client .transports .WebSocket ;
23+ import io .socket .engineio .parser .Packet ;
24+ import io .socket .engineio .parser .Parser ;
25+ import io .socket .parseqs .ParseQS ;
26+ import io .socket .thread .EventThread ;
27+ import okhttp3 .OkHttpClient ;
28+
2529
2630/**
2731 * The socket class for Event.IO Client.
@@ -98,8 +102,9 @@ public String toString() {
98102
99103 private static boolean priorWebsocketSuccess = false ;
100104
101- private static SSLContext defaultSSLContext ;
102- private static HostnameVerifier defaultHostnameVerifier ;
105+ private static okhttp3 .WebSocket .Factory defaultWebSocketFactory ;
106+ private static okhttp3 .Call .Factory defaultCallFactory ;
107+ private static OkHttpClient defaultOkHttpClient ;
103108
104109 private boolean secure ;
105110 private boolean upgrade ;
@@ -122,11 +127,8 @@ public String toString() {
122127 /*package*/ Transport transport ;
123128 private Future pingTimeoutTimer ;
124129 private Future pingIntervalTimer ;
125- private SSLContext sslContext ;
126- private HostnameVerifier hostnameVerifier ;
127- public Proxy proxy ;
128- public String proxyLogin ;
129- public String proxyPassword ;
130+ private okhttp3 .WebSocket .Factory webSocketFactory ;
131+ private okhttp3 .Call .Factory callFactory ;
130132
131133 private ReadyState readyState ;
132134 private ScheduledExecutorService heartbeatScheduler ;
@@ -190,7 +192,6 @@ public Socket(Options opts) {
190192 opts .port = this .secure ? 443 : 80 ;
191193 }
192194
193- this .sslContext = opts .sslContext != null ? opts .sslContext : defaultSSLContext ;
194195 this .hostname = opts .hostname != null ? opts .hostname : "localhost" ;
195196 this .port = opts .port ;
196197 this .query = opts .query != null ?
@@ -203,18 +204,28 @@ public Socket(Options opts) {
203204 opts .transports : new String []{Polling .NAME , WebSocket .NAME }));
204205 this .policyPort = opts .policyPort != 0 ? opts .policyPort : 843 ;
205206 this .rememberUpgrade = opts .rememberUpgrade ;
206- this .hostnameVerifier = opts .hostnameVerifier != null ? opts .hostnameVerifier : defaultHostnameVerifier ;
207- this .proxy = opts .proxy ;
208- this .proxyLogin = opts .proxyLogin ;
209- this .proxyPassword = opts .proxyPassword ;
207+ this .callFactory = opts .callFactory != null ? opts .callFactory : defaultCallFactory ;
208+ this .webSocketFactory = opts .webSocketFactory != null ? opts .webSocketFactory : defaultWebSocketFactory ;
209+ if (callFactory == null ) {
210+ if (defaultOkHttpClient == null ) {
211+ defaultOkHttpClient = new OkHttpClient ();
212+ }
213+ callFactory = defaultOkHttpClient ;
214+ }
215+ if (webSocketFactory == null ) {
216+ if (defaultOkHttpClient == null ) {
217+ defaultOkHttpClient = new OkHttpClient ();
218+ }
219+ webSocketFactory = defaultOkHttpClient ;
220+ }
210221 }
211222
212- public static void setDefaultSSLContext ( SSLContext sslContext ) {
213- defaultSSLContext = sslContext ;
223+ public static void setDefaultOkHttpWebSocketFactory ( okhttp3 . WebSocket . Factory factory ) {
224+ defaultWebSocketFactory = factory ;
214225 }
215226
216- public static void setDefaultHostnameVerifier ( HostnameVerifier hostnameVerifier ) {
217- defaultHostnameVerifier = hostnameVerifier ;
227+ public static void setDefaultOkHttpCallFactory ( okhttp3 . Call . Factory factory ) {
228+ defaultCallFactory = factory ;
218229 }
219230
220231 /**
@@ -262,7 +273,6 @@ private Transport createTransport(String name) {
262273 }
263274
264275 Transport .Options opts = new Transport .Options ();
265- opts .sslContext = this .sslContext ;
266276 opts .hostname = this .hostname ;
267277 opts .port = this .port ;
268278 opts .secure = this .secure ;
@@ -272,10 +282,8 @@ private Transport createTransport(String name) {
272282 opts .timestampParam = this .timestampParam ;
273283 opts .policyPort = this .policyPort ;
274284 opts .socket = this ;
275- opts .hostnameVerifier = this .hostnameVerifier ;
276- opts .proxy = this .proxy ;
277- opts .proxyLogin = this .proxyLogin ;
278- opts .proxyPassword = this .proxyPassword ;
285+ opts .callFactory = this .callFactory ;
286+ opts .webSocketFactory = this .webSocketFactory ;
279287
280288 Transport transport ;
281289 if (WebSocket .NAME .equals (name )) {
0 commit comments