From da1cf9eb89ba890070929cd972bba28174e6a3f0 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 28 Mar 2015 16:16:03 -0400 Subject: [PATCH 1/3] socketio/socket.io-client-swift#37 --- SwiftIO/SocketAnyEvent.swift | 35 ++++++++++++++++++++++++++++++++ SwiftIO/SocketEventHandler.swift | 1 - SwiftIO/SocketIOClient.swift | 6 +++--- 3 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 SwiftIO/SocketAnyEvent.swift diff --git a/SwiftIO/SocketAnyEvent.swift b/SwiftIO/SocketAnyEvent.swift new file mode 100644 index 0000000..e0ddfe2 --- /dev/null +++ b/SwiftIO/SocketAnyEvent.swift @@ -0,0 +1,35 @@ +// +// SocketAnyEvent.swift +// Socket.IO-Swift +// +// Created by Erik Little on 3/28/15. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +import Foundation + +@objc public class SocketAnyEvent { + public let event:String! + public var items:[AnyObject]? + + init(event:String, items:[AnyObject]?) { + self.event = event + self.items = items + } +} \ No newline at end of file diff --git a/SwiftIO/SocketEventHandler.swift b/SwiftIO/SocketEventHandler.swift index 82fd69b..f68c73d 100644 --- a/SwiftIO/SocketEventHandler.swift +++ b/SwiftIO/SocketEventHandler.swift @@ -25,7 +25,6 @@ import Foundation public typealias NormalCallback = (NSArray?, AckEmitter?) -> Void -public typealias AnyHandler = (event:String, items:AnyObject?) public typealias AckEmitter = (AnyObject...) -> Void private func emitAckCallback(socket:SocketIOClient, num:Int) diff --git a/SwiftIO/SocketIOClient.swift b/SwiftIO/SocketIOClient.swift index 91f4711..7ade9cc 100644 --- a/SwiftIO/SocketIOClient.swift +++ b/SwiftIO/SocketIOClient.swift @@ -28,7 +28,7 @@ public class SocketIOClient: NSObject, SocketEngineClient { let reconnectAttempts:Int! private lazy var params = [String: AnyObject]() private var ackHandlers = ContiguousArray() - private var anyHandler:((AnyHandler) -> Void)? + private var anyHandler:((SocketAnyEvent) -> Void)? private var _closed = false private var _connected = false private var _connecting = false @@ -360,7 +360,7 @@ public class SocketIOClient: NSObject, SocketEngineClient { if self.anyHandler != nil { dispatch_async(dispatch_get_main_queue()) {[weak self] in - self?.anyHandler?((event, data)) + self?.anyHandler?(SocketAnyEvent(event: event, items: data)) return } } @@ -400,7 +400,7 @@ public class SocketIOClient: NSObject, SocketEngineClient { /** Adds a handler that will be called on every event. */ - public func onAny(handler:(AnyHandler) -> Void) { + public func onAny(handler:(SocketAnyEvent) -> Void) { self.anyHandler = handler } From 93f1cfe9dcb8e21f4e8a694077978fd4478075be Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 28 Mar 2015 16:54:48 -0400 Subject: [PATCH 2/3] fix socketio/socket.io-client-swift#36 --- SwiftIO/SocketEngine.swift | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/SwiftIO/SocketEngine.swift b/SwiftIO/SocketEngine.swift index ee9bcdf..ecb7e39 100644 --- a/SwiftIO/SocketEngine.swift +++ b/SwiftIO/SocketEngine.swift @@ -164,7 +164,7 @@ public class SocketEngine: NSObject, WebSocketDelegate { self.ws = WebSocket(url: NSURL(string: self.urlWebSocket! + "&sid=\(self.sid)")!) self.ws?.queue = self.handleQueue self.ws?.delegate = self - + if connect { self.ws?.connect() } @@ -184,16 +184,19 @@ public class SocketEngine: NSObject, WebSocketDelegate { } self.waitingForPoll = true - let req = NSURLRequest(URL: NSURL(string: self.urlPolling! + "&sid=\(self.sid)&b64=1")!) + let req = NSMutableURLRequest(URL: NSURL(string: self.urlPolling! + "&sid=\(self.sid)&b64=1")!) self.doRequest(req) } - private func doRequest(req:NSURLRequest) { + private func doRequest(req:NSMutableURLRequest) { if !self.polling { return } + req.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData + + // NSLog("Doing request: \(req)") self.session.dataTaskWithRequest(req) {[weak self] data, res, err in if self == nil { return @@ -205,7 +208,7 @@ public class SocketEngine: NSObject, WebSocketDelegate { return } - // println(data) + // NSLog("Got response: \(res)") if let str = NSString(data: data, encoding: NSUTF8StringEncoding) as? String { dispatch_async(self!.parseQueue) { @@ -219,7 +222,7 @@ public class SocketEngine: NSObject, WebSocketDelegate { if self!.fastUpgrade { self?.doFastUpgrade() return - } else if !self!.closed { + } else if !self!.closed && !self!.websocket { self?.doPoll() } }.resume() @@ -369,6 +372,7 @@ public class SocketEngine: NSObject, WebSocketDelegate { length += chr } else { if length == "" || testLength(length, &n) { + NSLog("parsing error: \(str)") self.handlePollingFailed("Error parsing XHR message") return } @@ -377,7 +381,7 @@ public class SocketEngine: NSObject, WebSocketDelegate { if let lengthInt = length.toInt() { if lengthInt != msg.length { - println("parsing error") + NSLog("parsing error: \(str)") return } } From 7b7ccb87dac49495d5a1074f1c1eb34c57366e64 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 28 Mar 2015 16:57:09 -0400 Subject: [PATCH 3/3] bump version --- Socket.IO-Client-Swift.podspec | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Socket.IO-Client-Swift.podspec b/Socket.IO-Client-Swift.podspec index a350c05..f1c301d 100644 --- a/Socket.IO-Client-Swift.podspec +++ b/Socket.IO-Client-Swift.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "Socket.IO-Client-Swift" - s.version = "1.4.3" + s.version = "1.4.4" s.summary = "Socket.IO-client for Swift" s.description = <<-DESC Socket.IO-client for Swift. @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.author = { "Erik" => "nuclear.ace@gmail.com" } s.ios.deployment_target = '8.0' s.osx.deployment_target = '10.10' - s.source = { :git => "https://github.com/socketio/socket.io-client-swift.git", :tag => 'v1.4.3' } + s.source = { :git => "https://github.com/socketio/socket.io-client-swift.git", :tag => 'v1.4.4' } s.source_files = "SwiftIO/**/*.swift" s.requires_arc = true # s.dependency 'Starscream', '~> 0.9' # currently this repo includes Starscream swift files