diff --git a/SocketIOClientSwift/WebSocket.swift b/SocketIOClientSwift/WebSocket.swift index af05abb..8c2d1de 100644 --- a/SocketIOClientSwift/WebSocket.swift +++ b/SocketIOClientSwift/WebSocket.swift @@ -378,21 +378,17 @@ public class WebSocket : NSObject, NSStreamDelegate { } if totalSize > 0 { if validateResponse(buffer, bufferLen: totalSize) { - dispatch_async(queue, { [weak self] in - guard let weakSelf = self else { - return - } - - weakSelf.connected = true - if let connectBlock = weakSelf.onConnect { + dispatch_async(queue, { + self.connected = true + if let connectBlock = self.onConnect { connectBlock() } - weakSelf.delegate?.websocketDidConnect(weakSelf) + self.delegate?.websocketDidConnect(self) }) totalSize += 1 //skip the last \n let restSize = bufferLen - totalSize if restSize > 0 { - processRawMessage((buffer+totalSize),bufferLen: restSize) + processRawMessage((buffer+totalSize), bufferLen: restSize) } return true } @@ -525,15 +521,9 @@ public class WebSocket : NSObject, NSStreamDelegate { data = NSData(bytes: UnsafePointer((buffer+offset)), length: Int(len)) } if receivedOpcode == OpCode.Pong.rawValue { - dispatch_async(queue, { [weak self] in - guard let weakSelf = self else { - return - } - - if let pongBlock = weakSelf.onPong { - pongBlock() - } - weakSelf.pongDelegate?.websocketDidReceivePong(weakSelf) + dispatch_async(queue, { + self.onPong?() + self.pongDelegate?.websocketDidReceivePong(self) }) let step = Int(offset+numericCast(len)) @@ -618,33 +608,24 @@ public class WebSocket : NSObject, NSStreamDelegate { dequeueWrite(data, code: OpCode.Pong) } else if response.code == .TextFrame { let str: NSString? = NSString(data: response.buffer!, encoding: NSUTF8StringEncoding) - if str == nil { - writeError(CloseCode.Encoding.rawValue) - return false - } - dispatch_async(queue, { [weak self] in - guard let weakSelf = self else { - return - } - if let textBlock = weakSelf.onText { - textBlock(str! as String) - } - weakSelf.delegate?.websocketDidReceiveMessage(weakSelf, text: str! as String) - }) + if let str = str as String? { + dispatch_async(queue, { + self.onText?(str) + self.delegate?.websocketDidReceiveMessage(self, text: str) + }) + } else { + writeError(CloseCode.Encoding.rawValue) + return false + } } else if response.code == .BinaryFrame { let data = response.buffer! //local copy so it is perverse for writing - dispatch_async(queue, { [weak self] in - guard let weakSelf = self else { - return - } - - if let dataBlock = weakSelf.onData { - dataBlock(data) - } - weakSelf.delegate?.websocketDidReceiveData(weakSelf, data: data) - }) + dispatch_async(queue) { + self.onData?(data) + self.delegate?.websocketDidReceiveData(self, data: data) + } } + readStack.removeLast() return true } @@ -745,17 +726,12 @@ public class WebSocket : NSObject, NSStreamDelegate { ///used to preform the disconnect delegate private func doDisconnect(error: NSError?) { if !self.didDisconnect { - dispatch_async(queue, { [weak self] in - guard let weakSelf = self else { - return - } + dispatch_async(queue) { + self.didDisconnect = true - weakSelf.didDisconnect = true - if let disconnect = weakSelf.onDisconnect { - disconnect(error) - } - weakSelf.delegate?.websocketDidDisconnect(weakSelf, error: error) - }) + self.onDisconnect?(error) + self.delegate?.websocketDidDisconnect(self, error: error) + } } }