API Change: rename methods, add typealias. Update README

This commit is contained in:
Erik 2015-01-31 10:10:26 -05:00
parent 4b5d06f39a
commit 368a9c8af3
3 changed files with 37 additions and 38 deletions

View File

@ -9,15 +9,25 @@ Installation
2. Create a bridging header for SocketRocket 2. Create a bridging header for SocketRocket
3. Copy the SwiftIO folder into your xcode project 3. Copy the SwiftIO folder into your xcode project
Use API
=== ===
Constructor
-----------
`init(socketURL: String, opts[String: AnyObject]? = nil)` - Constructs a new client for the given URL. opts can be omitted (will use default values.)
Methods Methods
------- -------
1. `socket.on(name:String, callback:((data:AnyObject?) -> Void))` - Adds a handler for an event. 1. `socket.on(name:String, callback:((data:AnyObject?) -> Void))` - Adds a handler for an event.
2. `socket.onMultipleArgs(name:String, callback:((data:[AnyObject]) -> Void))` - Adds a handler for an event that can have multiple items. Items are stored in an array. 2. `socket.onMultipleItems(name:String, callback:((data:AnyObject...) -> Void))` - Adds a handler for an event that can have multiple items. Items are stored in an array.
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.connect()` - Establishes a connection to the server. A "connect" event is fired upon successful connection. 4. `socket.connect()` - Establishes a connection to the server. A "connect" event is fired upon successful connection.
5. `socket.close()` - Closes the socket. Once a socket is closed it should not be reopened. 5. `socket.close()` - Closes the socket. Once a socket is closed it should not be reopened.
Events
------
1. `connect` - Emitted when on a successful connection.
2. `disconnect` - Emitted when the connection is closed.
3. `reconnect` - Emitted when the connection is starting to reconnect.
4. `reconnectAttempt` - Emitted when attempting to reconnect.
```swift ```swift
// opts can be omitted, will use default values // opts can be omitted, will use default values
@ -27,21 +37,20 @@ let socket = SocketIOClient(socketURL: "https://localhost:8080", opts: [
"reconnectWait": 5 // default 10 "reconnectWait": 5 // default 10
]) ])
// Socket Events
socket.on("connect") {data in socket.on("connect") {data in
println("socket connected") println("socket connected")
// Sending messages // Sending messages
socket.emit("testEcho") socket.emit("testEcho")
socket.emit("testObject", [ socket.emit("testObject", [
"data": true "data": true
]) ])
socket.emit("arrayTest", [1, true, "test", ["test": "test"], data, data])
socket.emit("stringTest", "stringTest")
socket.emit("intTest", 1)
// Sending multiple args per message // Sending multiple items per message
socket.emit("multTest", [data], 1.4, 1, "true", socket.emit("multTest", [1], 1.4, 1, "true",
true, ["test": data], data) true, ["test": "foo"], "bar")
} }
socket.on("disconnect") {data in socket.on("disconnect") {data in
@ -61,6 +70,7 @@ socket.on("reconnectAttempt") {data in
println(triesLeft) println(triesLeft)
} }
} }
// End Socket Events
socket.on("jsonTest") {data in socket.on("jsonTest") {data in
if let json = data as? NSDictionary { if let json = data as? NSDictionary {
@ -68,31 +78,18 @@ socket.on("jsonTest") {data in
} }
} }
socket.on("boolTest") {data in
if let bool = data as? Bool {
println(bool) // true
}
}
socket.on("arrayTest") {data in
if let array = data as? NSArray {
println(array[0]) // 2
println(array[1]) // "test"
}
}
// Messages that have multiple items are passed // Messages that have multiple items are passed
// by an array // by an array
socket.onMultipleArgs("multipleItems") {datas in socket.onMultipleItems("multipleItems") {data in
if let str = datas[0] as? String { if let str = data[0] as? String {
println(str) println(str)
} }
if let arr = datas[1] as? [Int] { if let arr = data[1] as? [Int] {
println(arr) println(arr)
} }
if let obj = datas[4] as? NSDictionary { if let obj = data[4] as? NSDictionary {
println(obj["test"]) println(obj["test"])
} }
} }

View File

@ -24,24 +24,24 @@
class SocketEventHandler { class SocketEventHandler {
let event:String! let event:String!
let callback:((data:AnyObject?) -> Void)! let callback:NormalCallback!
let callbackMult:((data:[AnyObject]) -> Void)! let callbackMult:MultipleCallback!
init(event:String, callback:((data:AnyObject?) -> Void)) { init(event:String, callback:NormalCallback) {
self.event = event self.event = event
self.callback = callback self.callback = callback
} }
init(event:String, callback:((data:[AnyObject]) -> Void)) { init(event:String, callback:MultipleCallback) {
self.event = event self.event = event
self.callbackMult = callback self.callbackMult = callback
} }
func executeCallback(args:AnyObject?) { func executeCallback(item:AnyObject?) {
callback(data: args) callback(item)
} }
func executeCallback(args:[AnyObject]) { func executeCallback(items:[AnyObject]) {
callbackMult(data: args) callbackMult(items)
} }
} }

View File

@ -24,6 +24,9 @@
import Foundation import Foundation
typealias NormalCallback = (AnyObject?) -> Void
typealias MultipleCallback = (AnyObject...) -> Void
class SocketIOClient: NSObject, SRWebSocketDelegate { class SocketIOClient: NSObject, SRWebSocketDelegate {
let socketURL:String! let socketURL:String!
private let secure:Bool! private let secure:Bool!
@ -190,13 +193,13 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
} }
// Adds handler for single arg message // Adds handler for single arg message
func on(name:String, callback:((data:AnyObject?) -> Void)) { 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)
} }
// Adds handler for multiple arg message // Adds handler for multiple arg message
func onMultipleArgs(name:String, callback:((data:[AnyObject]) -> Void)) { func onMultipleItems(name:String, callback:MultipleCallback) {
let handler = SocketEventHandler(event: name, callback: callback) let handler = SocketEventHandler(event: name, callback: callback)
self.handlers.append(handler) self.handlers.append(handler)
} }
@ -463,7 +466,6 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
} }
} }
// Sends ping
func sendPing() { func sendPing() {
if self.connected { if self.connected {
self.io?.send("2") self.io?.send("2")
@ -514,7 +516,6 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
// Called when a message is recieved // Called when a message is recieved
func webSocket(webSocket:SRWebSocket!, didReceiveMessage message:AnyObject?) { func webSocket(webSocket:SRWebSocket!, didReceiveMessage message:AnyObject?) {
// println(message)
self.parseSocketMessage(message: message) self.parseSocketMessage(message: message)
} }
@ -540,6 +541,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
} }
} }
// Called when an error occurs.
func webSocket(webSocket:SRWebSocket!, didFailWithError error:NSError!) { func webSocket(webSocket:SRWebSocket!, didFailWithError error:NSError!) {
self.pingTimer?.invalidate() self.pingTimer?.invalidate()
self.connected = false self.connected = false