merge master
This commit is contained in:
commit
c1b0d3abeb
148
README.md
148
README.md
@ -1,13 +1,50 @@
|
||||
Socket.IO-Client-Swift
|
||||
======================
|
||||
#Socket.IO-Client-Swift
|
||||
Socket.IO-client for iOS/OS X.
|
||||
|
||||
Socket.IO-client for Swift. Supports ws/wss/polling connections and binary. For socket.io 1.0+ and Swift 1.2.
|
||||
##Example
|
||||
```swift
|
||||
let socket = SocketIOClient(socketURL: "localhost:8080")
|
||||
|
||||
For Swift 1.1 use the master.
|
||||
socket.on("connect") {data, ack in
|
||||
println("socket connected")
|
||||
}
|
||||
|
||||
Installation
|
||||
============
|
||||
socket.on("currentAmount") {data, ack in
|
||||
if let cur = data?[0] as? Double {
|
||||
socket.emitWithAck("canUpdate", cur).onAck(0) {data in
|
||||
socket.emit("update", ["amount": cur + 2.50])
|
||||
}
|
||||
|
||||
ack?("Got your currentAmount", "dude")
|
||||
}
|
||||
}
|
||||
|
||||
// Connect
|
||||
socket.connect()
|
||||
```
|
||||
|
||||
##Objective-C Example
|
||||
```objective-c
|
||||
SocketIOClient* socket = [[SocketIOClient alloc] initWithSocketURL:@"localhost:8080" options:nil];
|
||||
|
||||
[socket on: @"connect" callback: ^(NSArray* data, void (^ack)(NSArray*)) {
|
||||
NSLog(@"connected");
|
||||
[socket emitObjc:@"echo" withItems:@[@"echo test"]];
|
||||
[[socket emitWithAckObjc:@"ackack" withItems:@[@"test"]] onAck:0 withCallback:^(NSArray* data) {
|
||||
NSLog(@"Got data");
|
||||
}];
|
||||
}];
|
||||
|
||||
```
|
||||
|
||||
##Features
|
||||
- Supports socket.io 1.0+
|
||||
- Supports binary
|
||||
- Supports Polling and WebSockets
|
||||
- Supports TLS/SSL
|
||||
- Can be used from Objective-C
|
||||
|
||||
##Installation
|
||||
Manually (iOS 7+)
|
||||
-----------------
|
||||
1. Copy the SwiftIO folder into your Xcode project!
|
||||
@ -36,13 +73,23 @@ Import in your swift file:
|
||||
import Socket_IO_Client_Swift
|
||||
```
|
||||
|
||||
API
|
||||
===
|
||||
##API
|
||||
Constructors
|
||||
-----------
|
||||
`init(socketURL: String, opts:NSDictionary? = nil)` - Constructs a new client for the given URL. opts can be omitted (will use default values. See example)
|
||||
`init(socketURL: String, opts:NSDictionary? = nil)` - Constructs a new client for the given URL. opts can be omitted (will use default values)
|
||||
|
||||
`convenience init(socketURL: String, options:NSDictionary?)` - Same as above, but meant for Objective-C. See Objective-C Example.
|
||||
|
||||
Options
|
||||
-------
|
||||
- `reconnects: Bool` Default is `true`
|
||||
- `reconnectAttempts: Int` Default is `-1` (infinite tries)
|
||||
- `reconnectWait: Int` Default is `10`
|
||||
- `forcePolling: Bool` Default is `false`. `true` forces the client to use xhr-polling.
|
||||
- `forceWebsockets: Bool` Default is `false`. `true` forces the client to use WebSockets.
|
||||
- `nsp: String` Default is `"/"`
|
||||
- `cookies: [NSHTTPCookie]?` An array of NSHTTPCookies. Passed during the handshake. Default is nil.
|
||||
|
||||
Methods
|
||||
-------
|
||||
1. `socket.on(name:String, callback:((data:NSArray?, ack:AckEmitter?) -> Void))` - Adds a handler for an event. Items are passed by an array. `ack` can be used to send an ack when one is requested. See example.
|
||||
@ -63,87 +110,8 @@ Events
|
||||
4. `reconnect` - Emitted when the connection is starting to reconnect.
|
||||
5. `reconnectAttempt` - Emitted when attempting to reconnect.
|
||||
|
||||
Example
|
||||
=======
|
||||
```swift
|
||||
// opts can be omitted, will use default values
|
||||
let socket = SocketIOClient(socketURL: "https://localhost:8080", opts: [
|
||||
"reconnects": true, // Default is true
|
||||
"reconnectAttempts": 5, // Default is -1 (infinite tries)
|
||||
"reconnectWait": 5, // Default is 10
|
||||
"nsp": "swift", // connects to the specified namespace. Default is /
|
||||
"forcePolling": true, // if true the client will only use XHR polling, Default is false (polling/WebSockets)
|
||||
"forceWebsockets": false, // if true the client will only use WebSockets. Trumps forcePolling. Default is false. (polling/WebSockets)
|
||||
"cookies": nil // An array of NSHTTPCookies. Passed during handshake. Default is nil
|
||||
])
|
||||
|
||||
// Called on every event
|
||||
socket.onAny {println("got event: \($0.event) with items \($0.items)")}
|
||||
|
||||
// Socket Events
|
||||
socket.on("connect") {data, ack in
|
||||
println("socket connected")
|
||||
|
||||
// Sending messages
|
||||
socket.emit("testEcho")
|
||||
|
||||
socket.emit("testObject", [
|
||||
"data": true
|
||||
])
|
||||
|
||||
// Sending multiple items per message
|
||||
socket.emit("multTest", [1], 1.4, 1, "true",
|
||||
true, ["test": "foo"], "bar")
|
||||
}
|
||||
|
||||
// Requesting acks, and responding to acks
|
||||
socket.on("ackEvent") {data, ack in
|
||||
if let str = data?[0] as? String {
|
||||
println("Got ackEvent")
|
||||
}
|
||||
|
||||
// data is an array
|
||||
if let int = data?[1] as? Int {
|
||||
println("Got int")
|
||||
}
|
||||
|
||||
// You can specify a custom timeout interval. 0 means no timeout.
|
||||
socket.emitWithAck("ackTest", "test").onAck(0) {data in
|
||||
println(data?[0])
|
||||
}
|
||||
|
||||
ack?("Got your event", "dude")
|
||||
}
|
||||
|
||||
socket.on("jsonTest") {data, ack in
|
||||
if let json = data?[0] as? NSDictionary {
|
||||
println(json["test"]!) // foo bar
|
||||
}
|
||||
}
|
||||
|
||||
// Connecting
|
||||
socket.connect()
|
||||
```
|
||||
|
||||
Objective-C Example
|
||||
===================
|
||||
```objective-c
|
||||
SocketIOClient* socket = [[SocketIOClient alloc] initWithSocketURL:@"localhost:8080" options:nil];
|
||||
|
||||
[socket on: @"connect" callback: ^(NSArray* data, void (^ack)(NSArray*)) {
|
||||
NSLog(@"connected");
|
||||
[socket emitObjc:@"echo" withItems:@[@"echo test"]];
|
||||
[[socket emitWithAckObjc:@"ackack" withItems:@[@"test"]] onAck:0 withCallback:^(NSArray* data) {
|
||||
NSLog(@"Got data");
|
||||
}];
|
||||
}];
|
||||
|
||||
```
|
||||
|
||||
Detailed Example
|
||||
================
|
||||
##Detailed Example
|
||||
A more detailed example can be found [here](https://github.com/nuclearace/socket.io-client-swift-example)
|
||||
|
||||
License
|
||||
=======
|
||||
##License
|
||||
MIT
|
||||
|
||||
@ -515,11 +515,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
|
||||
}
|
||||
|
||||
func sendPing() {
|
||||
if self.websocket {
|
||||
self.sendWebSocketMessage("", withType: PacketType.PING)
|
||||
} else {
|
||||
self.sendPollMessage("", withType: PacketType.PING)
|
||||
}
|
||||
self.write("", withType: PacketType.PING, withData: nil)
|
||||
}
|
||||
|
||||
private func sendPollMessage(var msg:String, withType type:PacketType,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user