@@ -161,6 +161,19 @@ public class PusherConnection: WebSocketDelegate {
161
161
public var channels = PusherChannels ( )
162
162
public var socket : WebSocket !
163
163
public var URLSession : NSURLSession
164
+
165
+ public lazy var reachability : Reachability ? = {
166
+ let reachability = try ? Reachability . reachabilityForInternetConnection ( )
167
+ reachability? . whenReachable = { [ unowned self] reachability in
168
+ if !self . connected {
169
+ self . socket. connect ( )
170
+ }
171
+ }
172
+ reachability? . whenUnreachable = { [ unowned self] reachability in
173
+ print ( " Network unreachable " )
174
+ }
175
+ return reachability
176
+ } ( )
164
177
165
178
public init( key: String, socket: WebSocket, url: String, options: PusherClientOptions, URLSession: NSURLSession = NSURLSession . sharedSession ( ) ) {
166
179
self . url = url
@@ -225,15 +238,19 @@ public class PusherConnection: WebSocketDelegate {
225
238
226
239
public func disconnect( ) {
227
240
if self . connected {
241
+ self . reachability? . stopNotifier ( )
228
242
self . socket. disconnect ( )
229
243
}
230
244
}
231
-
245
+
232
246
public func connect( ) {
233
247
if self . connected {
234
248
return
235
249
} else {
236
250
self . socket. connect ( )
251
+ if let reconnect = self . options. autoReconnect where reconnect {
252
+ _ = try ? reachability? . startNotifier ( )
253
+ }
237
254
}
238
255
}
239
256
@@ -529,30 +546,11 @@ public class PusherConnection: WebSocketDelegate {
529
546
if let error = error {
530
547
print ( " Websocket is disconnected: \( error. localizedDescription) " )
531
548
}
532
-
549
+
533
550
self . connected = false
534
551
for (_, channel) in self . channels. channels {
535
552
channel. subscribed = false
536
553
}
537
-
538
- if let reconnect = self . options. autoReconnect where reconnect {
539
- let reachability = try ! Reachability . reachabilityForInternetConnection ( )
540
-
541
- if let reachability = try ? Reachability . reachabilityForInternetConnection ( ) {
542
-
543
- reachability. whenReachable = { reachability in
544
- if !self . connected {
545
- self . socket. connect ( )
546
- }
547
- }
548
-
549
- reachability. whenUnreachable = { reachability in
550
- print ( " Network unreachable " )
551
- }
552
- }
553
-
554
- if let _ = try ? reachability. startNotifier ( ) { }
555
- }
556
554
}
557
555
558
556
public func websocketDidConnect( ws: WebSocket) { }
0 commit comments