fix socketio/socket.io-client-swift#20, change objc api
This commit is contained in:
parent
0ca13c5496
commit
5b180a0a6d
12
README.md
12
README.md
@ -47,10 +47,10 @@ 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.
|
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.
|
||||||
2. `socket.onAny(callback:((event:String, items:AnyObject?)) -> Void)` - Adds a handler for all events. It will be called on any received event.
|
2. `socket.onAny(callback:((event:String, items:AnyObject?)) -> Void)` - Adds a handler for all events. It will be called on any received event.
|
||||||
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.emitObjc(event:String, args:[AnyObject])` - `emit` for Objective-C
|
4. `socket.emitObjc(event:String, withItems items:[AnyObject])` - `emit` for Objective-C
|
||||||
5. `socket.emitWithAck(event:String, args:AnyObject...) -> SocketAckHandler` - Sends a message that requests an acknowledgement from the server. Returns a SocketAckHandler which you can use to add an onAck handler. See example.
|
5. `socket.emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler` - Sends a message that requests an acknowledgement from the server. Returns a SocketAckHandler which you can use to add an onAck handler. See example.
|
||||||
6. `socket.emitWithAckObjc(event:String, _ args:[AnyObject]) -> SocketAckHandler` - `emitWithAck` for Objective-C.
|
6. `socket.emitWithAckObjc(event:String, withItems items:[AnyObject]) -> SocketAckHandler` - `emitWithAck` for Objective-C.
|
||||||
7. `socket.connect()` - Establishes a connection to the server. A "connect" event is fired upon successful connection.
|
7. `socket.connect()` - Establishes a connection to the server. A "connect" event is fired upon successful connection.
|
||||||
8. `socket.connectWithParams(params:[String: AnyObject])` - Establishes a connection to the server passing the specified params. A "connect" event is fired upon successful connection.
|
8. `socket.connectWithParams(params:[String: AnyObject])` - Establishes a connection to the server passing the specified params. A "connect" event is fired upon successful connection.
|
||||||
9. `socket.close()` - Closes the socket. Once a socket is closed it should not be reopened.
|
9. `socket.close()` - Closes the socket. Once a socket is closed it should not be reopened.
|
||||||
@ -131,8 +131,8 @@ SocketIOClient* socket = [[SocketIOClient alloc] initWithSocketURL:@"localhost:8
|
|||||||
|
|
||||||
[socket on: @"connect" callback: ^(NSArray* data, void (^ack)(NSArray*)) {
|
[socket on: @"connect" callback: ^(NSArray* data, void (^ack)(NSArray*)) {
|
||||||
NSLog(@"connected");
|
NSLog(@"connected");
|
||||||
[socket emitObjc:@"echo" :@[@"echo test"]];
|
[socket emitObjc:@"echo" withItems:@[@"echo test"]];
|
||||||
[[socket emitWithAckObjc:@"ackack" :@[@"test"]] onAck:0 withCallback:^(NSArray* data) {
|
[[socket emitWithAckObjc:@"ackack" withItems:@[@"test"]] onAck:0 withCallback:^(NSArray* data) {
|
||||||
NSLog(@"Got data");
|
NSLog(@"Got data");
|
||||||
}];
|
}];
|
||||||
}];
|
}];
|
||||||
|
|||||||
@ -109,7 +109,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func createURLs(params:[String: AnyObject]? = nil) -> (String, String) {
|
private func createURLs(params:[String: AnyObject]?) -> (String, String) {
|
||||||
var url = "\(self.client.socketURL)/socket.io/?transport="
|
var url = "\(self.client.socketURL)/socket.io/?transport="
|
||||||
var urlPolling:String
|
var urlPolling:String
|
||||||
var urlWebSocket:String
|
var urlWebSocket:String
|
||||||
@ -287,7 +287,7 @@ public class SocketEngine: NSObject, WebSocketDelegate {
|
|||||||
assert(false, "We're in a bad state, this shouldn't happen.")
|
assert(false, "We're in a bad state, this shouldn't happen.")
|
||||||
}
|
}
|
||||||
|
|
||||||
let (urlPolling, urlWebSocket) = self.createURLs(params: opts)
|
let (urlPolling, urlWebSocket) = self.createURLs(opts)
|
||||||
self.urlPolling = urlPolling
|
self.urlPolling = urlPolling
|
||||||
self.urlWebSocket = urlWebSocket
|
self.urlWebSocket = urlWebSocket
|
||||||
let reqPolling = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&b64=1")!)
|
let reqPolling = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&b64=1")!)
|
||||||
|
|||||||
@ -175,13 +175,13 @@ public class SocketIOClient: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Server wants us to die
|
// Server wants us to die
|
||||||
func didForceClose() {
|
func didForceClose(#message:String) {
|
||||||
self._closed = true
|
self._closed = true
|
||||||
self._connected = false
|
self._connected = false
|
||||||
self.reconnects = false
|
self.reconnects = false
|
||||||
self._connecting = false
|
self._connecting = false
|
||||||
self._reconnecting = false
|
self._reconnecting = false
|
||||||
self.handleEvent("disconnect", data: "closed", isInternalMessage: true)
|
self.handleEvent("disconnect", data: message, isInternalMessage: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sends a message with multiple args
|
// Sends a message with multiple args
|
||||||
@ -199,8 +199,8 @@ public class SocketIOClient: NSObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Objc doesn't have variadics
|
// Objc doesn't have variadics
|
||||||
public func emitObjc(event:String, _ args:[AnyObject]) {
|
public func emitObjc(event:String, withItems items:[AnyObject]) {
|
||||||
self.emit(event, args)
|
self.emit(event, items)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler {
|
public func emitWithAck(event:String, _ args:AnyObject...) -> SocketAckHandler {
|
||||||
@ -221,8 +221,8 @@ public class SocketIOClient: NSObject {
|
|||||||
return ackHandler
|
return ackHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
public func emitWithAckObjc(event:String, _ args:[AnyObject]) -> SocketAckHandler {
|
public func emitWithAckObjc(event:String, withItems items:[AnyObject]) -> SocketAckHandler {
|
||||||
return self.emitWithAck(event, args)
|
return self.emitWithAck(event, items)
|
||||||
}
|
}
|
||||||
|
|
||||||
private func _emit(event:String, _ args:[AnyObject], ack:Int? = nil) {
|
private func _emit(event:String, _ args:[AnyObject], ack:Int? = nil) {
|
||||||
@ -319,10 +319,13 @@ public class SocketIOClient: NSObject {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
dispatch_async(dispatch_get_main_queue()) {[weak self] in
|
if self.anyHandler != nil {
|
||||||
self?.anyHandler?((event, data))
|
dispatch_async(dispatch_get_main_queue()) {[weak self] in
|
||||||
return
|
self?.anyHandler?((event, data))
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for handler in self.handlers {
|
for handler in self.handlers {
|
||||||
if handler.event == event {
|
if handler.event == event {
|
||||||
if data is NSArray {
|
if data is NSArray {
|
||||||
@ -400,7 +403,7 @@ public class SocketIOClient: NSObject {
|
|||||||
// We lost connection and should attempt to reestablish
|
// We lost connection and should attempt to reestablish
|
||||||
func tryReconnect() {
|
func tryReconnect() {
|
||||||
if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts {
|
if self.reconnectAttempts != -1 && self.currentReconnectAttempt + 1 > self.reconnectAttempts {
|
||||||
self.didForceClose()
|
self.didForceClose(message: "Reconnect Failed")
|
||||||
return
|
return
|
||||||
} else if self.connected {
|
} else if self.connected {
|
||||||
self._connecting = false
|
self._connecting = false
|
||||||
@ -438,7 +441,7 @@ public class SocketIOClient: NSObject {
|
|||||||
self._connected = false
|
self._connected = false
|
||||||
self._connecting = false
|
self._connecting = false
|
||||||
if self.closed || !self.reconnects {
|
if self.closed || !self.reconnects {
|
||||||
self.didForceClose()
|
self.didForceClose(message: "WebSocket closed")
|
||||||
} else {
|
} else {
|
||||||
self.handleEvent("reconnect", data: reason, isInternalMessage: true)
|
self.handleEvent("reconnect", data: reason, isInternalMessage: true)
|
||||||
self.tryReconnect()
|
self.tryReconnect()
|
||||||
@ -451,7 +454,7 @@ public class SocketIOClient: NSObject {
|
|||||||
self._connecting = false
|
self._connecting = false
|
||||||
self.handleEvent("error", data: error.localizedDescription, isInternalMessage: true)
|
self.handleEvent("error", data: error.localizedDescription, isInternalMessage: true)
|
||||||
if self.closed || !self.reconnects {
|
if self.closed || !self.reconnects {
|
||||||
self.didForceClose()
|
self.didForceClose(message: "WebSocket closed with an error \(error)")
|
||||||
} else if !self.reconnecting {
|
} else if !self.reconnecting {
|
||||||
self.handleEvent("reconnect", data: error.localizedDescription, isInternalMessage: true)
|
self.handleEvent("reconnect", data: error.localizedDescription, isInternalMessage: true)
|
||||||
self.tryReconnect()
|
self.tryReconnect()
|
||||||
|
|||||||
@ -209,6 +209,9 @@ class SocketParser {
|
|||||||
socket.didConnect()
|
socket.didConnect()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
} else if stringMessage == "1" {
|
||||||
|
socket.didForceClose(message: "Got disconnect")
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if stringMessage.hasPrefix("5") || stringMessage.hasPrefix("6") {
|
if stringMessage.hasPrefix("5") || stringMessage.hasPrefix("6") {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user