#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.
|
||||
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.
|
||||
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.
|
||||
|
||||
Events
|
||||
|
||||
@ -32,10 +32,12 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
||||
DISPATCH_QUEUE_SERIAL)
|
||||
let emitQueue = dispatch_queue_create("emitQueue".cStringUsingEncoding(NSUTF8StringEncoding),
|
||||
DISPATCH_QUEUE_SERIAL)
|
||||
private lazy var params:[String: AnyObject] = [String: AnyObject]()
|
||||
private var ackHandlers = [SocketAckHandler]()
|
||||
private var currentAck = -1
|
||||
private var handlers = [SocketEventHandler]()
|
||||
private var lastSocketMessage:SocketEvent?
|
||||
private var paramConnect = false
|
||||
private var pingTimer:NSTimer!
|
||||
private var secure = false
|
||||
var closed = false
|
||||
@ -92,21 +94,41 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
||||
|
||||
// Connects to the server
|
||||
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 {
|
||||
println("Warning: This socket was previvously closed. Reopening could be dangerous. Be careful.")
|
||||
}
|
||||
|
||||
self.connecting = true
|
||||
self.closed = false
|
||||
var endpoint:String
|
||||
|
||||
if self.secure {
|
||||
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 = SRWebSocket(URL: NSURL(string: url))
|
||||
self.io?.delegate = self
|
||||
self.io?.open()
|
||||
}
|
||||
@ -120,6 +142,14 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
||||
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
|
||||
// If a message contains binary we have to send those
|
||||
// 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) {
|
||||
let handler = SocketEventHandler(event: name, callback: callback)
|
||||
self.handlers.append(handler)
|
||||
@ -794,8 +824,13 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
||||
self!.tryReconnect(triesLeft: triesLeft)
|
||||
}
|
||||
self.reconnecting = true
|
||||
|
||||
if self.paramConnect {
|
||||
self.connectWithParams(self.params)
|
||||
} else {
|
||||
self.connect()
|
||||
}
|
||||
}
|
||||
|
||||
// Called when a message is recieved
|
||||
func webSocket(webSocket:SRWebSocket!, didReceiveMessage message:AnyObject?) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user