24
24
25
25
import Foundation
26
26
27
- class SocketIOClient {
27
+ public class SocketIOClient : NSObject {
28
28
let socketURL : NSMutableString !
29
29
let ackQueue = dispatch_queue_create ( " ackQueue " . cStringUsingEncoding ( NSUTF8StringEncoding) ,
30
30
DISPATCH_QUEUE_SERIAL)
@@ -57,7 +57,7 @@ class SocketIOClient {
57
57
}
58
58
var sid : String ?
59
59
60
- init ( socketURL: String , opts: [ String : AnyObject ] ? = nil ) {
60
+ public init ( socketURL: String , opts: [ String : AnyObject ] ? = nil ) {
61
61
var mutURL = RegexMutable ( socketURL)
62
62
63
63
if mutURL [ " https:// " ] . matches ( ) . count != 0 {
@@ -96,11 +96,13 @@ class SocketIOClient {
96
96
self . reconnectAttempts = - 1
97
97
}
98
98
99
+ super. init ( )
100
+
99
101
self . engine = SocketEngine ( client: self , forcePolling: self . forcePolling)
100
102
}
101
103
102
104
// Closes the socket
103
- func close( ) {
105
+ public func close( ) {
104
106
self . closed = true
105
107
self . connecting = false
106
108
self . connected = false
@@ -109,7 +111,7 @@ class SocketIOClient {
109
111
}
110
112
111
113
// Connects to the server
112
- func connect( ) {
114
+ public func connect( ) {
113
115
if self . closed {
114
116
println ( " Warning! This socket was previously closed. This might be dangerous! " )
115
117
self . closed = false
@@ -119,7 +121,7 @@ class SocketIOClient {
119
121
}
120
122
121
123
// Connect to the server using params
122
- func connectWithParams( params: [ String : AnyObject ] ) {
124
+ public func connectWithParams( params: [ String : AnyObject ] ) {
123
125
if self . closed {
124
126
println ( " Warning! This socket was previously closed. This might be dangerous! " )
125
127
self . closed = false
@@ -139,6 +141,7 @@ class SocketIOClient {
139
141
self . currentReconnectAttempt = 0
140
142
self . reconnectTimer? . invalidate ( )
141
143
self . reconnectTimer = nil
144
+
142
145
self . handleEvent ( " connect " , data: nil , isInternalMessage: false )
143
146
}
144
147
@@ -155,7 +158,7 @@ class SocketIOClient {
155
158
// Sends a message with multiple args
156
159
// If a message contains binary we have to send those
157
160
// seperately.
158
- func emit( event: String , _ args: AnyObject ... ) {
161
+ public func emit( event: String , _ args: AnyObject ... ) {
159
162
if !self . connected {
160
163
return
161
164
}
@@ -166,7 +169,12 @@ class SocketIOClient {
166
169
}
167
170
}
168
171
169
- func emitWithAck( event: String , _ args: AnyObject ... ) -> SocketAckHandler {
172
+ // Objc doesn't have variadics
173
+ public func emitObjc( event: String , _ args: [ AnyObject ] ) {
174
+ self . emit ( event, args)
175
+ }
176
+
177
+ public func emitWithAck( event: String , _ args: AnyObject ... ) -> SocketAckHandler {
170
178
if !self . connected {
171
179
return SocketAckHandler ( event: " fail " )
172
180
}
@@ -183,6 +191,10 @@ class SocketIOClient {
183
191
return ackHandler
184
192
}
185
193
194
+ public func emitWithAckObjc( event: String , _ args: [ AnyObject ] ) -> SocketAckHandler {
195
+ return self . emitWithAck ( event, args)
196
+ }
197
+
186
198
private func _emit( event: String , _ args: [ AnyObject ] , ack: Bool = false ) {
187
199
var frame : SocketEvent
188
200
var str : String
@@ -217,7 +229,7 @@ class SocketIOClient {
217
229
}
218
230
219
231
// If the server wants to know that the client received data
220
- func emitAck( ack: Int , withData data: [ AnyObject ] ? , withAckType ackType: Int ) {
232
+ internal func emitAck( ack: Int , withData data: [ AnyObject ] ? , withAckType ackType: Int ) {
221
233
dispatch_async ( self . ackQueue) { [ weak self] in
222
234
if self == nil || !self !. connected || data == nil {
223
235
return
@@ -270,7 +282,7 @@ class SocketIOClient {
270
282
}
271
283
272
284
// Handles events
273
- func handleEvent( event: String , data: AnyObject ? , isInternalMessage: Bool = false ,
285
+ public func handleEvent( event: String , data: AnyObject ? , isInternalMessage: Bool = false ,
274
286
wantsAck ack: Int ? = nil , withAckType ackType: Int = 3 ) {
275
287
// println("Should do event: \(event) with data: \(data)")
276
288
if !self . connected && !isInternalMessage {
@@ -319,18 +331,18 @@ class SocketIOClient {
319
331
}
320
332
321
333
// Adds handler for an event
322
- func on( name: String , callback: NormalCallback ) {
334
+ public func on( name: String , callback: NormalCallback ) {
323
335
let handler = SocketEventHandler ( event: name, callback: callback)
324
336
self . handlers. append ( handler)
325
337
}
326
338
327
339
// Adds a handler for any event
328
- func onAny( handler: ( AnyHandler ) -> Void ) {
340
+ public func onAny( handler: ( AnyHandler ) -> Void ) {
329
341
self . anyHandler = handler
330
342
}
331
343
332
344
// Opens the connection to the socket
333
- func open( ) {
345
+ public func open( ) {
334
346
self . connect ( )
335
347
}
336
348
@@ -497,7 +509,7 @@ class SocketIOClient {
497
509
}
498
510
499
511
// Parses messages recieved
500
- func parseSocketMessage( stringMessage: String ) {
512
+ internal func parseSocketMessage( stringMessage: String ) {
501
513
// println(message!)
502
514
503
515
// Check for successful namepsace connect
@@ -718,7 +730,7 @@ class SocketIOClient {
718
730
}
719
731
720
732
// Handles binary data
721
- func parseBinaryData( data: NSData ) {
733
+ internal func parseBinaryData( data: NSData ) {
722
734
let shouldExecute = self . waitingData [ 0 ] . addData ( data)
723
735
724
736
if shouldExecute {
@@ -763,7 +775,7 @@ class SocketIOClient {
763
775
}
764
776
765
777
// Something happened while polling
766
- func pollingDidFail( err: NSError ? ) {
778
+ internal func pollingDidFail( err: NSError ? ) {
767
779
if !self . reconnecting {
768
780
self . connected = false
769
781
self . handleEvent ( " reconnect " , data: err? . localizedDescription, isInternalMessage: true )
@@ -772,7 +784,7 @@ class SocketIOClient {
772
784
}
773
785
774
786
// We lost connection and should attempt to reestablish
775
- @ objc func tryReconnect( ) {
787
+ internal func tryReconnect( ) {
776
788
if self . reconnectAttempts != - 1 && self . currentReconnectAttempt + 1 > self . reconnectAttempts {
777
789
self . didForceClose ( )
778
790
return
0 commit comments