update websocket library
This commit is contained in:
parent
13440ce6b1
commit
d6e1510cbf
@ -67,7 +67,7 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
let headerWSKeyName = "Sec-WebSocket-Key"
|
let headerWSKeyName = "Sec-WebSocket-Key"
|
||||||
let headerOriginName = "Origin"
|
let headerOriginName = "Origin"
|
||||||
let headerWSAcceptName = "Sec-WebSocket-Accept"
|
let headerWSAcceptName = "Sec-WebSocket-Accept"
|
||||||
let BUFFER_MAX = 2048
|
let BUFFER_MAX = 4096
|
||||||
let FinMask: UInt8 = 0x80
|
let FinMask: UInt8 = 0x80
|
||||||
let OpCodeMask: UInt8 = 0x0F
|
let OpCodeMask: UInt8 = 0x0F
|
||||||
let RSVMask: UInt8 = 0x70
|
let RSVMask: UInt8 = 0x70
|
||||||
@ -133,13 +133,15 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
if isCreated {
|
if isCreated {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
unowned let weakSelf = self
|
||||||
|
|
||||||
dispatch_async(queue,{
|
dispatch_async(queue,{
|
||||||
self.didDisconnect = false
|
weakSelf.didDisconnect = false
|
||||||
})
|
})
|
||||||
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), {
|
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), {
|
||||||
self.isCreated = true
|
weakSelf.isCreated = true
|
||||||
self.createHTTPRequest()
|
weakSelf.createHTTPRequest()
|
||||||
self.isCreated = false
|
weakSelf.isCreated = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -318,8 +320,8 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
let length = inputStream!.read(buffer, maxLength: BUFFER_MAX)
|
let length = inputStream!.read(buffer, maxLength: BUFFER_MAX)
|
||||||
if length > 0 {
|
if length > 0 {
|
||||||
if !connected {
|
if !connected {
|
||||||
connected = processHTTP(buffer, bufferLen: length)
|
let status = processHTTP(buffer, bufferLen: length)
|
||||||
if !connected {
|
if !status {
|
||||||
self.doDisconnect(self.errorWithDetail("Invalid HTTP upgrade", code: 1))
|
self.doDisconnect(self.errorWithDetail("Invalid HTTP upgrade", code: 1))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -368,12 +370,14 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if totalSize > 0 {
|
if totalSize > 0 {
|
||||||
|
unowned let weakSelf = self
|
||||||
if validateResponse(buffer, bufferLen: totalSize) {
|
if validateResponse(buffer, bufferLen: totalSize) {
|
||||||
dispatch_async(queue,{
|
dispatch_async(queue,{
|
||||||
if let connectBlock = self.onConnect {
|
weakSelf.connected = true
|
||||||
|
if let connectBlock = weakSelf.onConnect {
|
||||||
connectBlock()
|
connectBlock()
|
||||||
}
|
}
|
||||||
self.delegate?.websocketDidConnect(self)
|
weakSelf.delegate?.websocketDidConnect(self)
|
||||||
})
|
})
|
||||||
totalSize += 1 //skip the last \n
|
totalSize += 1 //skip the last \n
|
||||||
let restSize = bufferLen - totalSize
|
let restSize = bufferLen - totalSize
|
||||||
@ -511,7 +515,7 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
data = NSData(bytes: UnsafePointer<UInt8>((buffer+offset)), length: Int(len))
|
data = NSData(bytes: UnsafePointer<UInt8>((buffer+offset)), length: Int(len))
|
||||||
}
|
}
|
||||||
if receivedOpcode == OpCode.Pong.rawValue {
|
if receivedOpcode == OpCode.Pong.rawValue {
|
||||||
dispatch_async(queue,{
|
dispatch_async(queue,{[unowned self] in
|
||||||
if let pongBlock = self.onPong {
|
if let pongBlock = self.onPong {
|
||||||
pongBlock()
|
pongBlock()
|
||||||
}
|
}
|
||||||
@ -604,7 +608,7 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
writeError(CloseCode.Encoding.rawValue)
|
writeError(CloseCode.Encoding.rawValue)
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
dispatch_async(queue,{
|
dispatch_async(queue,{[unowned self] in
|
||||||
if let textBlock = self.onText {
|
if let textBlock = self.onText {
|
||||||
textBlock(str! as String)
|
textBlock(str! as String)
|
||||||
}
|
}
|
||||||
@ -612,7 +616,7 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
})
|
})
|
||||||
} else if response.code == .BinaryFrame {
|
} else if response.code == .BinaryFrame {
|
||||||
let data = response.buffer! //local copy so it is perverse for writing
|
let data = response.buffer! //local copy so it is perverse for writing
|
||||||
dispatch_async(queue,{
|
dispatch_async(queue,{[unowned self] in
|
||||||
if let dataBlock = self.onData {
|
if let dataBlock = self.onData {
|
||||||
dataBlock(data)
|
dataBlock(data)
|
||||||
}
|
}
|
||||||
@ -719,7 +723,7 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
///used to preform the disconnect delegate
|
///used to preform the disconnect delegate
|
||||||
private func doDisconnect(error: NSError?) {
|
private func doDisconnect(error: NSError?) {
|
||||||
if !self.didDisconnect {
|
if !self.didDisconnect {
|
||||||
dispatch_async(queue,{
|
dispatch_async(queue,{[unowned self] in
|
||||||
self.didDisconnect = true
|
self.didDisconnect = true
|
||||||
if let disconnect = self.onDisconnect {
|
if let disconnect = self.onDisconnect {
|
||||||
disconnect(error)
|
disconnect(error)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user