begin work on binary support
This commit is contained in:
parent
5e4de44fd2
commit
8a75d35523
@ -63,6 +63,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
private var handlers = [EventHandler]()
|
private var handlers = [EventHandler]()
|
||||||
var io:SRWebSocket?
|
var io:SRWebSocket?
|
||||||
var pingTimer:NSTimer!
|
var pingTimer:NSTimer!
|
||||||
|
lazy var recieveBuffer = [[String:String]]()
|
||||||
var secure = false
|
var secure = false
|
||||||
|
|
||||||
init(socketURL:String, secure:Bool = false) {
|
init(socketURL:String, secure:Bool = false) {
|
||||||
@ -112,13 +113,13 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
let frame = socketMessage(event: event, args: args)
|
let frame = socketMessage(event: event, args: args)
|
||||||
let str = frame.createMessage()
|
let str = frame.createMessage()
|
||||||
|
|
||||||
println("Sending: \(str)")
|
// println("Sending: \(str)")
|
||||||
self.io?.send(str)
|
self.io?.send(str)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handles events
|
// Handles events
|
||||||
func handleEvent(#event:String, data:Any?) {
|
func handleEvent(#event:String, data:Any?) {
|
||||||
println("Should do event: \(event) with data: \(data)")
|
// println("Should do event: \(event) with data: \(data)")
|
||||||
|
|
||||||
for handler in self.handlers {
|
for handler in self.handlers {
|
||||||
if (handler.event == event) {
|
if (handler.event == event) {
|
||||||
@ -146,9 +147,9 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
// Parses messages recieved
|
// Parses messages recieved
|
||||||
private func parseSocketMessage(#message:AnyObject?) {
|
private func parseSocketMessage(#message:AnyObject?) {
|
||||||
if (message == nil) {
|
if (message == nil) {
|
||||||
// TODO handle nil
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
// println(message!)
|
||||||
|
|
||||||
if let stringMessage = message as? String {
|
if let stringMessage = message as? String {
|
||||||
/**
|
/**
|
||||||
@ -171,6 +172,9 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
End check for socket info frame
|
End check for socket info frame
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Begin check for message
|
||||||
|
**/
|
||||||
let messageGroups = mutMessage["(\\d*)(\\[.*\\])?"].groups()
|
let messageGroups = mutMessage["(\\d*)(\\[.*\\])?"].groups()
|
||||||
if (messageGroups.count == 3 && messageGroups[1] == "42") {
|
if (messageGroups.count == 3 && messageGroups[1] == "42") {
|
||||||
let messagePart = messageGroups[2]
|
let messagePart = messageGroups[2]
|
||||||
@ -185,9 +189,46 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
|
|
||||||
}
|
}
|
||||||
self.handleEvent(event: event, data: data)
|
self.handleEvent(event: event, data: data)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
End Check for message
|
||||||
|
**/
|
||||||
|
|
||||||
|
/**
|
||||||
|
Begin check for binary placeholder
|
||||||
|
**/
|
||||||
|
let binaryGroup = mutMessage["(\\d*)-\\[\"(.*)\",(\\{.*\\})\\]"].groups()
|
||||||
|
if (binaryGroup != nil && binaryGroup[1] == "451") {
|
||||||
|
let event = binaryGroup[2]
|
||||||
|
let dataObject:AnyObject = binaryGroup[3] as AnyObject
|
||||||
|
var bufferFrame = [
|
||||||
|
"event": event,
|
||||||
|
]
|
||||||
|
|
||||||
|
self.recieveBuffer.append(bufferFrame)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
End check for binary placeholder
|
||||||
|
**/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Begin check for binary data
|
||||||
|
**/
|
||||||
|
if let binaryData = message as? NSData {
|
||||||
|
// if let binaryAsString = NSString(data: binaryData, encoding: NSUTF8StringEncoding) {
|
||||||
|
// println(binaryAsString)
|
||||||
|
// }
|
||||||
|
let lastBufferedFrame = self.recieveBuffer.removeLast()
|
||||||
|
self.handleEvent(event: lastBufferedFrame["event"]!,
|
||||||
|
data: binaryData)
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
End check for binary data
|
||||||
|
**/
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sends ping
|
// Sends ping
|
||||||
@ -199,7 +240,7 @@ class SocketIOClient: NSObject, SRWebSocketDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Starts the ping timer
|
// Starts the ping timer
|
||||||
func startPingTimer(#interval:Int) {
|
private func startPingTimer(#interval:Int) {
|
||||||
self.pingTimer = NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(interval), target: self,
|
self.pingTimer = NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(interval), target: self,
|
||||||
selector: Selector("sendPing"), userInfo: nil, repeats: true)
|
selector: Selector("sendPing"), userInfo: nil, repeats: true)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user