#15 add connectWithParams
This commit is contained in:
parent
516d9b3eea
commit
5b9537065f
@ -22,6 +22,7 @@ Methods
|
|||||||
3. `socket.emit(event:String, args:AnyObject...)` - Sends a message. Can send multiple args.
|
3. `socket.emit(event:String, args:AnyObject...)` - Sends a message. Can send multiple args.
|
||||||
4. `socket.emitWithAck(event:String, args:AnyObject...) -> SocketAckHandler` - Sends a message that requests an acknoweldgement from the server. Returns a SocketAckHandler which you can use to add an onAck handler. See example.
|
4. `socket.emitWithAck(event:String, args:AnyObject...) -> SocketAckHandler` - Sends a message that requests an acknoweldgement from the server. Returns a SocketAckHandler which you can use to add an onAck handler. See example.
|
||||||
5. `socket.connect()` - Establishes a connection to the server. A "connect" event is fired upon successful connection.
|
5. `socket.connect()` - Establishes a connection to the server. A "connect" event is fired upon successful connection.
|
||||||
|
6. `socket.connectWithParams` - Establishes a connection to the server, passing the specified params. A "connect" event is fired upon successful connection.
|
||||||
6. `socket.close()` - Closes the socket. Once a socket is closed it should not be reopened.
|
6. `socket.close()` - Closes the socket. Once a socket is closed it should not be reopened.
|
||||||
|
|
||||||
Events
|
Events
|
||||||
|
|||||||
@ -32,10 +32,12 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
DISPATCH_QUEUE_SERIAL)
|
DISPATCH_QUEUE_SERIAL)
|
||||||
let emitQueue = dispatch_queue_create("emitQueue".cStringUsingEncoding(NSUTF8StringEncoding),
|
let emitQueue = dispatch_queue_create("emitQueue".cStringUsingEncoding(NSUTF8StringEncoding),
|
||||||
DISPATCH_QUEUE_SERIAL)
|
DISPATCH_QUEUE_SERIAL)
|
||||||
|
private lazy var params:[String: AnyObject] = [String: AnyObject]()
|
||||||
private var ackHandlers = [SocketAckHandler]()
|
private var ackHandlers = [SocketAckHandler]()
|
||||||
private var currentAck = -1
|
private var currentAck = -1
|
||||||
private var handlers = [SocketEventHandler]()
|
private var handlers = [SocketEventHandler]()
|
||||||
private var lastSocketMessage:SocketEvent?
|
private var lastSocketMessage:SocketEvent?
|
||||||
|
private var paramConnect = false
|
||||||
private var pingTimer:NSTimer!
|
private var pingTimer:NSTimer!
|
||||||
private var secure = false
|
private var secure = false
|
||||||
var closed = false
|
var closed = false
|
||||||
@ -92,21 +94,41 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
|
|
||||||
// Connects to the server
|
// Connects to the server
|
||||||
func connect() {
|
func connect() {
|
||||||
|
self.connectWithURL(self.createConnectURL())
|
||||||
|
}
|
||||||
|
|
||||||
|
// Connect to the server using params
|
||||||
|
func connectWithParams(params:[String: AnyObject]) {
|
||||||
|
self.params = params
|
||||||
|
self.paramConnect = true
|
||||||
|
var endpoint = self.createConnectURL()
|
||||||
|
|
||||||
|
for (key, value) in params {
|
||||||
|
let keyEsc = key.stringByAddingPercentEncodingWithAllowedCharacters(
|
||||||
|
NSCharacterSet.URLHostAllowedCharacterSet())!
|
||||||
|
endpoint += "&\(keyEsc)="
|
||||||
|
|
||||||
|
if value is String {
|
||||||
|
let valueEsc = (value as! String).stringByAddingPercentEncodingWithAllowedCharacters(
|
||||||
|
NSCharacterSet.URLHostAllowedCharacterSet())!
|
||||||
|
endpoint += "\(valueEsc)"
|
||||||
|
} else {
|
||||||
|
endpoint += "\(value)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.connectWithURL(endpoint)
|
||||||
|
}
|
||||||
|
|
||||||
|
private func connectWithURL(url:String) {
|
||||||
if self.closed {
|
if self.closed {
|
||||||
println("Warning: This socket was previvously closed. Reopening could be dangerous. Be careful.")
|
println("Warning: This socket was previvously closed. Reopening could be dangerous. Be careful.")
|
||||||
}
|
}
|
||||||
|
|
||||||
self.connecting = true
|
self.connecting = true
|
||||||
self.closed = false
|
self.closed = false
|
||||||
var endpoint:String
|
|
||||||
|
|
||||||
if self.secure {
|
self.io = SRWebSocket(URL: NSURL(string: url))
|
||||||
endpoint = "wss://\(self.socketURL)/socket.io/?transport=websocket"
|
|
||||||
} else {
|
|
||||||
endpoint = "ws://\(self.socketURL)/socket.io/?transport=websocket"
|
|
||||||
}
|
|
||||||
|
|
||||||
self.io = SRWebSocket(URL: NSURL(string: endpoint))
|
|
||||||
self.io?.delegate = self
|
self.io?.delegate = self
|
||||||
self.io?.open()
|
self.io?.open()
|
||||||
}
|
}
|
||||||
@ -120,6 +142,14 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
return mutData
|
return mutData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func createConnectURL() -> String {
|
||||||
|
if self.secure {
|
||||||
|
return "wss://\(self.socketURL)/socket.io/?transport=websocket"
|
||||||
|
} else {
|
||||||
|
return "ws://\(self.socketURL)/socket.io/?transport=websocket"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Sends a message with multiple args
|
// Sends a message with multiple args
|
||||||
// If a message contains binary we have to send those
|
// If a message contains binary we have to send those
|
||||||
// seperately.
|
// seperately.
|
||||||
@ -286,7 +316,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds handler for single arg message
|
// Adds handler for an event
|
||||||
func on(name:String, callback:NormalCallback) {
|
func on(name:String, callback:NormalCallback) {
|
||||||
let handler = SocketEventHandler(event: name, callback: callback)
|
let handler = SocketEventHandler(event: name, callback: callback)
|
||||||
self.handlers.append(handler)
|
self.handlers.append(handler)
|
||||||
@ -794,7 +824,12 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
self!.tryReconnect(triesLeft: triesLeft)
|
self!.tryReconnect(triesLeft: triesLeft)
|
||||||
}
|
}
|
||||||
self.reconnecting = true
|
self.reconnecting = true
|
||||||
self.connect()
|
|
||||||
|
if self.paramConnect {
|
||||||
|
self.connectWithParams(self.params)
|
||||||
|
} else {
|
||||||
|
self.connect()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called when a message is recieved
|
// Called when a message is recieved
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user