diff --git a/README.md b/README.md index 5f375e9..f28ce34 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ Socket.IO-client for iOS/OS X. ##Example ```swift +import SocketIO let socket = SocketIOClient(socketURL: NSURL(string: "http://localhost:8080")!, config: [.log(true), .forcePolling(true)]) socket.on("connect") {data, ack in @@ -26,6 +27,7 @@ socket.connect() ##Objective-C Example ```objective-c +@import SocketIO; NSURL* url = [[NSURL alloc] initWithString:@"http://localhost:8080"]; SocketIOClient* socket = [[SocketIOClient alloc] initWithSocketURL:url config:@{@"log": @YES, @"forcePolling": @YES}]; @@ -90,7 +92,7 @@ Carthage ----------------- Add this line to your `Cartfile`: ``` -github "socketio/socket.io-client-swift" ~> 6.1.6 # Or latest version +github "socketio/socket.io-client-swift" ~> 7.0.3 # Or latest version ``` Run `carthage update --platform ios,macosx`. @@ -103,7 +105,7 @@ Create `Podfile` and add `pod 'Socket.IO-Client-Swift'`: use_frameworks! target 'YourApp' do - pod 'Socket.IO-Client-Swift', '~> 6.1.6' # Or latest version + pod 'Socket.IO-Client-Swift', '~> 7.0.3' # Or latest version end ``` @@ -117,13 +119,13 @@ Import the module: Swift: ```swift -import SocketIOClientSwift +import SocketIO ``` Objective-C: ```Objective-C -@import SocketIOClientSwift; +@import SocketIO; ``` CocoaSeeds @@ -132,7 +134,7 @@ CocoaSeeds Add this line to your `Seedfile`: ``` -github "socketio/socket.io-client-swift", "v6.1.6", :files => "Source/*.swift" # Or latest version +github "socketio/socket.io-client-swift", "v7.0.3", :files => "Source/*.swift" # Or latest version ``` Run `seed install`. @@ -141,7 +143,7 @@ Run `seed install`. ##API Constructors ----------- -`init(var socketURL: NSURL, config: SocketIOClientConfiguration = [])` - Creates a new SocketIOClient. options is a Set of SocketIOClientOption. If your socket.io server is secure, you need to specify `https` in your socketURL. +`init(var socketURL: NSURL, config: SocketIOClientConfiguration = [])` - Creates a new SocketIOClient. If your socket.io server is secure, you need to specify `https` in your socketURL. `convenience init(socketURL: NSURL, options: NSDictionary?)` - Same as above, but meant for Objective-C. See Options on how convert between SocketIOClientOptions and dictionary keys. diff --git a/Socket.IO-Client-Swift.podspec b/Socket.IO-Client-Swift.podspec index ae9890b..47c0b88 100644 --- a/Socket.IO-Client-Swift.podspec +++ b/Socket.IO-Client-Swift.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = "Socket.IO-Client-Swift" - s.module_name = "SocketIOClientSwift" - s.version = "6.1.6" + s.module_name = "SocketIO" + s.version = "7.0.3" s.summary = "Socket.IO-client for iOS and OS X" s.description = <<-DESC Socket.IO-client for iOS and OS X. @@ -14,7 +14,7 @@ Pod::Spec.new do |s| s.ios.deployment_target = '8.0' s.osx.deployment_target = '10.10' s.tvos.deployment_target = '9.0' - s.source = { :git => "https://github.com/socketio/socket.io-client-swift.git", :tag => 'v6.1.6' } + s.source = { :git => "https://github.com/socketio/socket.io-client-swift.git", :tag => 'v7.0.3' } s.source_files = "Source/**/*.swift" s.requires_arc = true # s.dependency 'Starscream', '~> 0.9' # currently this repo includes Starscream swift files diff --git a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj index 9821a8c..de5755c 100644 --- a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj +++ b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj @@ -7,100 +7,70 @@ objects = { /* Begin PBXBuildFile section */ - 572EF21F1B51F16C00EEBB58 /* SocketIO-iOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 572EF21E1B51F16C00EEBB58 /* SocketIO-iOS.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 572EF2251B51F16C00EEBB58 /* SocketIOClientSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 572EF2191B51F16C00EEBB58 /* SocketIOClientSwift.framework */; }; + 572EF21F1B51F16C00EEBB58 /* SocketIO.h in Headers */ = {isa = PBXBuildFile; fileRef = 572EF21E1B51F16C00EEBB58 /* SocketIO.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 572EF2251B51F16C00EEBB58 /* SocketIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 572EF2191B51F16C00EEBB58 /* SocketIO.framework */; }; 572EF23D1B51F18A00EEBB58 /* SocketIO-Mac.h in Headers */ = {isa = PBXBuildFile; fileRef = 572EF23C1B51F18A00EEBB58 /* SocketIO-Mac.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 572EF2431B51F18A00EEBB58 /* SocketIOClientSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 572EF2381B51F18A00EEBB58 /* SocketIOClientSwift.framework */; }; - 57634A111BD9B46A00E19CD7 /* SocketIO-iOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 572EF21E1B51F16C00EEBB58 /* SocketIO-iOS.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 572EF2431B51F18A00EEBB58 /* SocketIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 572EF2381B51F18A00EEBB58 /* SocketIO.framework */; }; + 57634A111BD9B46A00E19CD7 /* SocketIO.h in Headers */ = {isa = PBXBuildFile; fileRef = 572EF21E1B51F16C00EEBB58 /* SocketIO.h */; settings = {ATTRIBUTES = (Public, ); }; }; 57634A231BD9B46D00E19CD7 /* SocketSideEffectTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7472C65E1BCAC46E003CA70D /* SocketSideEffectTest.swift */; }; 57634A2A1BD9B46D00E19CD7 /* SocketEngineTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 741F39ED1BD025D80026C9CC /* SocketEngineTest.swift */; }; 57634A2F1BD9B46D00E19CD7 /* SocketBasicPacketTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74F124EF1BC574CF002966F4 /* SocketBasicPacketTest.swift */; }; 57634A321BD9B46D00E19CD7 /* SocketNamespacePacketTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7472C65B1BCAB53E003CA70D /* SocketNamespacePacketTest.swift */; }; 57634A3F1BD9B4BF00E19CD7 /* SocketIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57634A161BD9B46A00E19CD7 /* SocketIO.framework */; }; + 6CA08A961D615C040061FD2A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CA08A951D615C040061FD2A /* Security.framework */; }; + 6CA08A981D615C0B0061FD2A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CA08A971D615C0B0061FD2A /* Security.framework */; }; + 6CA08A9A1D615C140061FD2A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CA08A991D615C140061FD2A /* Security.framework */; }; 740CA1201C496EEB00CB98F4 /* SocketEngineWebsocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 740CA11F1C496EEB00CB98F4 /* SocketEngineWebsocket.swift */; }; 740CA1211C496EF200CB98F4 /* SocketEngineWebsocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 740CA11F1C496EEB00CB98F4 /* SocketEngineWebsocket.swift */; }; 740CA1221C496EF700CB98F4 /* SocketEngineWebsocket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 740CA11F1C496EEB00CB98F4 /* SocketEngineWebsocket.swift */; }; 74171E631C10CD240062D398 /* SocketAckEmitter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E501C10CD240062D398 /* SocketAckEmitter.swift */; }; - 74171E641C10CD240062D398 /* SocketAckEmitter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E501C10CD240062D398 /* SocketAckEmitter.swift */; }; 74171E651C10CD240062D398 /* SocketAckEmitter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E501C10CD240062D398 /* SocketAckEmitter.swift */; }; 74171E671C10CD240062D398 /* SocketAckEmitter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E501C10CD240062D398 /* SocketAckEmitter.swift */; }; - 74171E681C10CD240062D398 /* SocketAckEmitter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E501C10CD240062D398 /* SocketAckEmitter.swift */; }; 74171E691C10CD240062D398 /* SocketAckManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E511C10CD240062D398 /* SocketAckManager.swift */; }; - 74171E6A1C10CD240062D398 /* SocketAckManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E511C10CD240062D398 /* SocketAckManager.swift */; }; 74171E6B1C10CD240062D398 /* SocketAckManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E511C10CD240062D398 /* SocketAckManager.swift */; }; 74171E6D1C10CD240062D398 /* SocketAckManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E511C10CD240062D398 /* SocketAckManager.swift */; }; - 74171E6E1C10CD240062D398 /* SocketAckManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E511C10CD240062D398 /* SocketAckManager.swift */; }; 74171E6F1C10CD240062D398 /* SocketAnyEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E521C10CD240062D398 /* SocketAnyEvent.swift */; }; - 74171E701C10CD240062D398 /* SocketAnyEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E521C10CD240062D398 /* SocketAnyEvent.swift */; }; 74171E711C10CD240062D398 /* SocketAnyEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E521C10CD240062D398 /* SocketAnyEvent.swift */; }; 74171E731C10CD240062D398 /* SocketAnyEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E521C10CD240062D398 /* SocketAnyEvent.swift */; }; - 74171E741C10CD240062D398 /* SocketAnyEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E521C10CD240062D398 /* SocketAnyEvent.swift */; }; 74171E751C10CD240062D398 /* SocketEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E531C10CD240062D398 /* SocketEngine.swift */; }; - 74171E761C10CD240062D398 /* SocketEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E531C10CD240062D398 /* SocketEngine.swift */; }; 74171E771C10CD240062D398 /* SocketEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E531C10CD240062D398 /* SocketEngine.swift */; }; 74171E791C10CD240062D398 /* SocketEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E531C10CD240062D398 /* SocketEngine.swift */; }; - 74171E7A1C10CD240062D398 /* SocketEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E531C10CD240062D398 /* SocketEngine.swift */; }; 74171E7B1C10CD240062D398 /* SocketEngineClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E541C10CD240062D398 /* SocketEngineClient.swift */; }; - 74171E7C1C10CD240062D398 /* SocketEngineClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E541C10CD240062D398 /* SocketEngineClient.swift */; }; 74171E7D1C10CD240062D398 /* SocketEngineClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E541C10CD240062D398 /* SocketEngineClient.swift */; }; 74171E7F1C10CD240062D398 /* SocketEngineClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E541C10CD240062D398 /* SocketEngineClient.swift */; }; - 74171E801C10CD240062D398 /* SocketEngineClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E541C10CD240062D398 /* SocketEngineClient.swift */; }; 74171E811C10CD240062D398 /* SocketEnginePacketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E551C10CD240062D398 /* SocketEnginePacketType.swift */; }; - 74171E821C10CD240062D398 /* SocketEnginePacketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E551C10CD240062D398 /* SocketEnginePacketType.swift */; }; 74171E831C10CD240062D398 /* SocketEnginePacketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E551C10CD240062D398 /* SocketEnginePacketType.swift */; }; 74171E851C10CD240062D398 /* SocketEnginePacketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E551C10CD240062D398 /* SocketEnginePacketType.swift */; }; - 74171E861C10CD240062D398 /* SocketEnginePacketType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E551C10CD240062D398 /* SocketEnginePacketType.swift */; }; 74171E871C10CD240062D398 /* SocketEngineSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E561C10CD240062D398 /* SocketEngineSpec.swift */; }; - 74171E881C10CD240062D398 /* SocketEngineSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E561C10CD240062D398 /* SocketEngineSpec.swift */; }; 74171E891C10CD240062D398 /* SocketEngineSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E561C10CD240062D398 /* SocketEngineSpec.swift */; }; 74171E8B1C10CD240062D398 /* SocketEngineSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E561C10CD240062D398 /* SocketEngineSpec.swift */; }; - 74171E8C1C10CD240062D398 /* SocketEngineSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E561C10CD240062D398 /* SocketEngineSpec.swift */; }; 74171E8D1C10CD240062D398 /* SocketEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E571C10CD240062D398 /* SocketEventHandler.swift */; }; - 74171E8E1C10CD240062D398 /* SocketEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E571C10CD240062D398 /* SocketEventHandler.swift */; }; 74171E8F1C10CD240062D398 /* SocketEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E571C10CD240062D398 /* SocketEventHandler.swift */; }; 74171E911C10CD240062D398 /* SocketEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E571C10CD240062D398 /* SocketEventHandler.swift */; }; - 74171E921C10CD240062D398 /* SocketEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E571C10CD240062D398 /* SocketEventHandler.swift */; }; 74171E991C10CD240062D398 /* SocketIOClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E591C10CD240062D398 /* SocketIOClient.swift */; }; - 74171E9A1C10CD240062D398 /* SocketIOClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E591C10CD240062D398 /* SocketIOClient.swift */; }; 74171E9B1C10CD240062D398 /* SocketIOClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E591C10CD240062D398 /* SocketIOClient.swift */; }; 74171E9D1C10CD240062D398 /* SocketIOClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E591C10CD240062D398 /* SocketIOClient.swift */; }; - 74171E9E1C10CD240062D398 /* SocketIOClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E591C10CD240062D398 /* SocketIOClient.swift */; }; 74171E9F1C10CD240062D398 /* SocketIOClientOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5A1C10CD240062D398 /* SocketIOClientOption.swift */; }; - 74171EA01C10CD240062D398 /* SocketIOClientOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5A1C10CD240062D398 /* SocketIOClientOption.swift */; }; 74171EA11C10CD240062D398 /* SocketIOClientOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5A1C10CD240062D398 /* SocketIOClientOption.swift */; }; 74171EA31C10CD240062D398 /* SocketIOClientOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5A1C10CD240062D398 /* SocketIOClientOption.swift */; }; - 74171EA41C10CD240062D398 /* SocketIOClientOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5A1C10CD240062D398 /* SocketIOClientOption.swift */; }; 74171EA51C10CD240062D398 /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5B1C10CD240062D398 /* SocketIOClientStatus.swift */; }; - 74171EA61C10CD240062D398 /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5B1C10CD240062D398 /* SocketIOClientStatus.swift */; }; 74171EA71C10CD240062D398 /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5B1C10CD240062D398 /* SocketIOClientStatus.swift */; }; - 74171EA81C10CD240062D398 /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5B1C10CD240062D398 /* SocketIOClientStatus.swift */; }; 74171EA91C10CD240062D398 /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5B1C10CD240062D398 /* SocketIOClientStatus.swift */; }; - 74171EAA1C10CD240062D398 /* SocketIOClientStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5B1C10CD240062D398 /* SocketIOClientStatus.swift */; }; 74171EAB1C10CD240062D398 /* SocketLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5C1C10CD240062D398 /* SocketLogger.swift */; }; - 74171EAC1C10CD240062D398 /* SocketLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5C1C10CD240062D398 /* SocketLogger.swift */; }; 74171EAD1C10CD240062D398 /* SocketLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5C1C10CD240062D398 /* SocketLogger.swift */; }; 74171EAF1C10CD240062D398 /* SocketLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5C1C10CD240062D398 /* SocketLogger.swift */; }; - 74171EB01C10CD240062D398 /* SocketLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5C1C10CD240062D398 /* SocketLogger.swift */; }; 74171EB11C10CD240062D398 /* SocketPacket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5D1C10CD240062D398 /* SocketPacket.swift */; }; - 74171EB21C10CD240062D398 /* SocketPacket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5D1C10CD240062D398 /* SocketPacket.swift */; }; 74171EB31C10CD240062D398 /* SocketPacket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5D1C10CD240062D398 /* SocketPacket.swift */; }; 74171EB51C10CD240062D398 /* SocketPacket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5D1C10CD240062D398 /* SocketPacket.swift */; }; - 74171EB61C10CD240062D398 /* SocketPacket.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5D1C10CD240062D398 /* SocketPacket.swift */; }; 74171EB71C10CD240062D398 /* SocketParsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5E1C10CD240062D398 /* SocketParsable.swift */; }; - 74171EB81C10CD240062D398 /* SocketParsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5E1C10CD240062D398 /* SocketParsable.swift */; }; 74171EB91C10CD240062D398 /* SocketParsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5E1C10CD240062D398 /* SocketParsable.swift */; }; 74171EBB1C10CD240062D398 /* SocketParsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5E1C10CD240062D398 /* SocketParsable.swift */; }; - 74171EBC1C10CD240062D398 /* SocketParsable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5E1C10CD240062D398 /* SocketParsable.swift */; }; 74171EBD1C10CD240062D398 /* SocketStringReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5F1C10CD240062D398 /* SocketStringReader.swift */; }; - 74171EBE1C10CD240062D398 /* SocketStringReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5F1C10CD240062D398 /* SocketStringReader.swift */; }; 74171EBF1C10CD240062D398 /* SocketStringReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5F1C10CD240062D398 /* SocketStringReader.swift */; }; 74171EC11C10CD240062D398 /* SocketStringReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5F1C10CD240062D398 /* SocketStringReader.swift */; }; - 74171EC21C10CD240062D398 /* SocketStringReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E5F1C10CD240062D398 /* SocketStringReader.swift */; }; 74171EC31C10CD240062D398 /* SocketTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E601C10CD240062D398 /* SocketTypes.swift */; }; - 74171EC41C10CD240062D398 /* SocketTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E601C10CD240062D398 /* SocketTypes.swift */; }; 74171EC51C10CD240062D398 /* SocketTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E601C10CD240062D398 /* SocketTypes.swift */; }; 74171EC71C10CD240062D398 /* SocketTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E601C10CD240062D398 /* SocketTypes.swift */; }; - 74171EC81C10CD240062D398 /* SocketTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74171E601C10CD240062D398 /* SocketTypes.swift */; }; 741F39EE1BD025D80026C9CC /* SocketEngineTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 741F39ED1BD025D80026C9CC /* SocketEngineTest.swift */; }; 741F39EF1BD025D80026C9CC /* SocketEngineTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 741F39ED1BD025D80026C9CC /* SocketEngineTest.swift */; }; 7420CB791C49629E00956AA4 /* SocketEnginePollable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7420CB781C49629E00956AA4 /* SocketEnginePollable.swift */; }; @@ -161,17 +131,20 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 572EF2191B51F16C00EEBB58 /* SocketIOClientSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SocketIOClientSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 572EF2191B51F16C00EEBB58 /* SocketIO.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SocketIO.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 572EF21D1B51F16C00EEBB58 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 572EF21E1B51F16C00EEBB58 /* SocketIO-iOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SocketIO-iOS.h"; sourceTree = ""; }; + 572EF21E1B51F16C00EEBB58 /* SocketIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SocketIO.h; sourceTree = ""; }; 572EF2241B51F16C00EEBB58 /* SocketIO-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SocketIO-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 572EF2381B51F18A00EEBB58 /* SocketIOClientSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SocketIOClientSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 572EF2381B51F18A00EEBB58 /* SocketIO.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SocketIO.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 572EF23B1B51F18A00EEBB58 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 572EF23C1B51F18A00EEBB58 /* SocketIO-Mac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SocketIO-Mac.h"; sourceTree = ""; }; 572EF2421B51F18A00EEBB58 /* SocketIO-MacTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SocketIO-MacTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 572EF2481B51F18A00EEBB58 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 57634A161BD9B46A00E19CD7 /* SocketIO.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SocketIO.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 57634A3B1BD9B46D00E19CD7 /* SocketIO-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SocketIO-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6CA08A951D615C040061FD2A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + 6CA08A971D615C0B0061FD2A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + 6CA08A991D615C140061FD2A /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.2.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; 740CA11F1C496EEB00CB98F4 /* SocketEngineWebsocket.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SocketEngineWebsocket.swift; path = Source/SocketEngineWebsocket.swift; sourceTree = ""; }; 74171E501C10CD240062D398 /* SocketAckEmitter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SocketAckEmitter.swift; path = Source/SocketAckEmitter.swift; sourceTree = ""; }; 74171E511C10CD240062D398 /* SocketAckManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SocketAckManager.swift; path = Source/SocketAckManager.swift; sourceTree = ""; }; @@ -211,6 +184,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 6CA08A961D615C040061FD2A /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -218,7 +192,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 572EF2251B51F16C00EEBB58 /* SocketIOClientSwift.framework in Frameworks */, + 572EF2251B51F16C00EEBB58 /* SocketIO.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -226,6 +200,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 6CA08A981D615C0B0061FD2A /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -233,7 +208,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 572EF2431B51F18A00EEBB58 /* SocketIOClientSwift.framework in Frameworks */, + 572EF2431B51F18A00EEBB58 /* SocketIO.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -241,6 +216,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 6CA08A9A1D615C140061FD2A /* Security.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -258,20 +234,21 @@ 572EF20D1B51F12F00EEBB58 = { isa = PBXGroup; children = ( - 5764DF7B1B51F24A004FF46E /* Source */, + 6CA08A9B1D615C190061FD2A /* Frameworks */, + 572EF21A1B51F16C00EEBB58 /* Products */, 572EF21B1B51F16C00EEBB58 /* SocketIO-iOS */, 572EF2391B51F18A00EEBB58 /* SocketIO-Mac */, 572EF2461B51F18A00EEBB58 /* SocketIO-MacTests */, - 572EF21A1B51F16C00EEBB58 /* Products */, + 5764DF7B1B51F24A004FF46E /* Source */, ); sourceTree = ""; }; 572EF21A1B51F16C00EEBB58 /* Products */ = { isa = PBXGroup; children = ( - 572EF2191B51F16C00EEBB58 /* SocketIOClientSwift.framework */, + 572EF2191B51F16C00EEBB58 /* SocketIO.framework */, 572EF2241B51F16C00EEBB58 /* SocketIO-iOSTests.xctest */, - 572EF2381B51F18A00EEBB58 /* SocketIOClientSwift.framework */, + 572EF2381B51F18A00EEBB58 /* SocketIO.framework */, 572EF2421B51F18A00EEBB58 /* SocketIO-MacTests.xctest */, 57634A161BD9B46A00E19CD7 /* SocketIO.framework */, 57634A3B1BD9B46D00E19CD7 /* SocketIO-tvOSTests.xctest */, @@ -282,7 +259,7 @@ 572EF21B1B51F16C00EEBB58 /* SocketIO-iOS */ = { isa = PBXGroup; children = ( - 572EF21E1B51F16C00EEBB58 /* SocketIO-iOS.h */, + 572EF21E1B51F16C00EEBB58 /* SocketIO.h */, 572EF21C1B51F16C00EEBB58 /* Supporting Files */, ); path = "SocketIO-iOS"; @@ -367,6 +344,40 @@ name = Source; sourceTree = ""; }; + 6CA08A9B1D615C190061FD2A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6CA08A9E1D615C340061FD2A /* tvOS */, + 6CA08A9D1D615C2C0061FD2A /* Mac */, + 6CA08A9C1D615C270061FD2A /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 6CA08A9C1D615C270061FD2A /* iOS */ = { + isa = PBXGroup; + children = ( + 6CA08A951D615C040061FD2A /* Security.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 6CA08A9D1D615C2C0061FD2A /* Mac */ = { + isa = PBXGroup; + children = ( + 6CA08A971D615C0B0061FD2A /* Security.framework */, + ); + name = Mac; + sourceTree = ""; + }; + 6CA08A9E1D615C340061FD2A /* tvOS */ = { + isa = PBXGroup; + children = ( + 6CA08A991D615C140061FD2A /* Security.framework */, + ); + name = tvOS; + sourceTree = ""; + }; 74B4AD1B1D09A5C30062A523 /* Websocket */ = { isa = PBXGroup; children = ( @@ -383,7 +394,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 572EF21F1B51F16C00EEBB58 /* SocketIO-iOS.h in Headers */, + 572EF21F1B51F16C00EEBB58 /* SocketIO.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -399,7 +410,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 57634A111BD9B46A00E19CD7 /* SocketIO-iOS.h in Headers */, + 57634A111BD9B46A00E19CD7 /* SocketIO.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -421,7 +432,7 @@ ); name = "SocketIO-iOS"; productName = "SocketIO-iOS"; - productReference = 572EF2191B51F16C00EEBB58 /* SocketIOClientSwift.framework */; + productReference = 572EF2191B51F16C00EEBB58 /* SocketIO.framework */; productType = "com.apple.product-type.framework"; }; 572EF2231B51F16C00EEBB58 /* SocketIO-iOSTests */ = { @@ -457,7 +468,7 @@ ); name = "SocketIO-Mac"; productName = "SocketIO-Mac"; - productReference = 572EF2381B51F18A00EEBB58 /* SocketIOClientSwift.framework */; + productReference = 572EF2381B51F18A00EEBB58 /* SocketIO.framework */; productType = "com.apple.product-type.framework"; }; 572EF2411B51F18A00EEBB58 /* SocketIO-MacTests */ = { @@ -520,6 +531,7 @@ 572EF20E1B51F12F00EEBB58 /* Project object */ = { isa = PBXProject; attributes = { + LastSwiftMigration = 0730; LastSwiftUpdateCheck = 0730; LastUpgradeCheck = 0800; TargetAttributes = { @@ -643,25 +655,9 @@ buildActionMask = 2147483647; files = ( 7472C65F1BCAC46E003CA70D /* SocketSideEffectTest.swift in Sources */, - 74171EA61C10CD240062D398 /* SocketIOClientStatus.swift in Sources */, - 74171E881C10CD240062D398 /* SocketEngineSpec.swift in Sources */, - 74171EA01C10CD240062D398 /* SocketIOClientOption.swift in Sources */, - 74171E701C10CD240062D398 /* SocketAnyEvent.swift in Sources */, - 74171EC41C10CD240062D398 /* SocketTypes.swift in Sources */, - 74171E8E1C10CD240062D398 /* SocketEventHandler.swift in Sources */, - 74171E7C1C10CD240062D398 /* SocketEngineClient.swift in Sources */, - 74171E821C10CD240062D398 /* SocketEnginePacketType.swift in Sources */, - 74171EB21C10CD240062D398 /* SocketPacket.swift in Sources */, 741F39EE1BD025D80026C9CC /* SocketEngineTest.swift in Sources */, - 74171EBE1C10CD240062D398 /* SocketStringReader.swift in Sources */, 74F124F01BC574CF002966F4 /* SocketBasicPacketTest.swift in Sources */, - 74171E6A1C10CD240062D398 /* SocketAckManager.swift in Sources */, - 74171E761C10CD240062D398 /* SocketEngine.swift in Sources */, - 74171E641C10CD240062D398 /* SocketAckEmitter.swift in Sources */, - 74171EB81C10CD240062D398 /* SocketParsable.swift in Sources */, - 74171EAC1C10CD240062D398 /* SocketLogger.swift in Sources */, 7472C65C1BCAB53E003CA70D /* SocketNamespacePacketTest.swift in Sources */, - 74171E9A1C10CD240062D398 /* SocketIOClient.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -705,7 +701,6 @@ 74321DCC1C2D939A00CF6F43 /* SocketParserTest.swift in Sources */, 747BC59F1D5F9BA200CA5FA4 /* SocketIOClientConfigurationTest.swift in Sources */, 7472C6601BCAC46E003CA70D /* SocketSideEffectTest.swift in Sources */, - 74171EA81C10CD240062D398 /* SocketIOClientStatus.swift in Sources */, 741F39EF1BD025D80026C9CC /* SocketEngineTest.swift in Sources */, 74F124F11BC574CF002966F4 /* SocketBasicPacketTest.swift in Sources */, 7472C65D1BCAB53E003CA70D /* SocketNamespacePacketTest.swift in Sources */, @@ -748,25 +743,9 @@ buildActionMask = 2147483647; files = ( 57634A231BD9B46D00E19CD7 /* SocketSideEffectTest.swift in Sources */, - 74171EAA1C10CD240062D398 /* SocketIOClientStatus.swift in Sources */, - 74171E8C1C10CD240062D398 /* SocketEngineSpec.swift in Sources */, - 74171EA41C10CD240062D398 /* SocketIOClientOption.swift in Sources */, - 74171E741C10CD240062D398 /* SocketAnyEvent.swift in Sources */, - 74171EC81C10CD240062D398 /* SocketTypes.swift in Sources */, - 74171E921C10CD240062D398 /* SocketEventHandler.swift in Sources */, - 74171E801C10CD240062D398 /* SocketEngineClient.swift in Sources */, - 74171E861C10CD240062D398 /* SocketEnginePacketType.swift in Sources */, - 74171EB61C10CD240062D398 /* SocketPacket.swift in Sources */, 57634A2A1BD9B46D00E19CD7 /* SocketEngineTest.swift in Sources */, - 74171EC21C10CD240062D398 /* SocketStringReader.swift in Sources */, 57634A2F1BD9B46D00E19CD7 /* SocketBasicPacketTest.swift in Sources */, - 74171E6E1C10CD240062D398 /* SocketAckManager.swift in Sources */, - 74171E7A1C10CD240062D398 /* SocketEngine.swift in Sources */, - 74171E681C10CD240062D398 /* SocketAckEmitter.swift in Sources */, - 74171EBC1C10CD240062D398 /* SocketParsable.swift in Sources */, - 74171EB01C10CD240062D398 /* SocketLogger.swift in Sources */, 57634A321BD9B46D00E19CD7 /* SocketNamespacePacketTest.swift in Sources */, - 74171E9E1C10CD240062D398 /* SocketIOClient.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -817,8 +796,9 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.10; ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = SocketIOClientSwift; + PRODUCT_NAME = SocketIO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; TVOS_DEPLOYMENT_TARGET = 9.0; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; @@ -847,8 +827,9 @@ GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MACOSX_DEPLOYMENT_TARGET = 10.10; - PRODUCT_NAME = SocketIOClientSwift; + PRODUCT_NAME = SocketIO; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; TVOS_DEPLOYMENT_TARGET = 9.0; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; @@ -1004,7 +985,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "SocketIO-iOSTests/Info.plist"; + INFOPLIST_FILE = "SocketIO-iOS/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.4; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -1049,7 +1030,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "SocketIO-iOSTests/Info.plist"; + INFOPLIST_FILE = "SocketIO-iOS/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.4; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; @@ -1423,7 +1404,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "SocketIO-iOSTests/Info.plist"; + INFOPLIST_FILE = "SocketIO-iOS/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.4; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = YES; @@ -1468,7 +1449,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "SocketIO-iOSTests/Info.plist"; + INFOPLIST_FILE = "SocketIO-iOS/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.4; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MTL_ENABLE_DEBUG_INFO = NO; diff --git a/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-Mac.xcscheme b/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-Mac.xcscheme index c03a4b1..ea5febe 100644 --- a/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-Mac.xcscheme +++ b/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-Mac.xcscheme @@ -15,7 +15,7 @@ @@ -57,7 +57,7 @@ @@ -79,7 +79,7 @@ @@ -97,7 +97,7 @@ diff --git a/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-iOS.xcscheme b/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-iOS.xcscheme index fbbe97e..c583c9a 100644 --- a/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-iOS.xcscheme +++ b/Socket.IO-Client-Swift.xcodeproj/xcshareddata/xcschemes/SocketIO-iOS.xcscheme @@ -15,7 +15,7 @@ @@ -58,7 +58,7 @@ @@ -80,7 +80,7 @@ @@ -98,7 +98,7 @@ diff --git a/SocketIO-MacTests/SocketAckManagerTest.swift b/SocketIO-MacTests/SocketAckManagerTest.swift index dd3094d..764ad34 100644 --- a/SocketIO-MacTests/SocketAckManagerTest.swift +++ b/SocketIO-MacTests/SocketAckManagerTest.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import SocketIOClientSwift +@testable import SocketIO class SocketAckManagerTest: XCTestCase { var ackManager = SocketAckManager() @@ -15,11 +15,11 @@ class SocketAckManagerTest: XCTestCase { func testAddAcks() { let callbackExpection = self.expectation(description: "callbackExpection") let itemsArray = ["Hi", "ho"] - func callback(_ items: [AnyObject]) { + func callback(_ items: [Any]) { callbackExpection.fulfill() } ackManager.addAck(1, callback: callback) - ackManager.executeAck(1, with: itemsArray as [AnyObject], onQueue: DispatchQueue.main) + ackManager.executeAck(1, with: itemsArray, onQueue: DispatchQueue.main) waitForExpectations(timeout: 3.0, handler: nil) } diff --git a/SocketIO-MacTests/SocketBasicPacketTest.swift b/SocketIO-MacTests/SocketBasicPacketTest.swift index b533d6a..6766c74 100644 --- a/SocketIO-MacTests/SocketBasicPacketTest.swift +++ b/SocketIO-MacTests/SocketBasicPacketTest.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import SocketIOClientSwift +@testable import SocketIO class SocketBasicPacketTest: XCTestCase { let data = "test".data(using: String.Encoding.utf8)! @@ -16,15 +16,15 @@ class SocketBasicPacketTest: XCTestCase { func testEmpyEmit() { let expectedSendString = "2[\"test\"]" let sendData = ["test"] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/", ack: false) + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testNullEmit() { let expectedSendString = "2[\"test\",null]" - let sendData = ["test", NSNull()] as [Any] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/", ack: false) + let sendData: [Any] = ["test", NSNull()] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } @@ -32,7 +32,7 @@ class SocketBasicPacketTest: XCTestCase { func testStringEmit() { let expectedSendString = "2[\"test\",\"foo bar\"]" let sendData = ["test", "foo bar"] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/", ack: false) + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } @@ -40,31 +40,31 @@ class SocketBasicPacketTest: XCTestCase { func testStringEmitWithQuotes() { let expectedSendString = "2[\"test\",\"\\\"he\\\"llo world\\\"\"]" let sendData = ["test", "\"he\"llo world\""] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/", ack: false) + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testJSONEmit() { let expectedSendString = "2[\"test\",{\"test\":\"hello\",\"hello\":1,\"foobar\":true,\"null\":null}]" - let sendData = ["test" as AnyObject, ["foobar": true, "hello": 1, "test": "hello", "null": NSNull()] as NSDictionary] as [AnyObject] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/", ack: false) + let sendData: [Any] = ["test", ["foobar": true, "hello": 1, "test": "hello", "null": NSNull()]] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testArrayEmit() { let expectedSendString = "2[\"test\",[\"hello\",1,{\"test\":\"test\"}]]" - let sendData = ["test", ["hello", 1, ["test": "test"]]] as [Any] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/", ack: false) + let sendData: [Any] = ["test", ["hello", 1, ["test": "test"]]] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testBinaryEmit() { let expectedSendString = "51-[\"test\",{\"_placeholder\":true,\"num\":0}]" - let sendData = ["test", data] as [Any] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/", ack: false) + let sendData: [Any] = ["test", data] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data]) @@ -72,8 +72,8 @@ class SocketBasicPacketTest: XCTestCase { func testMultipleBinaryEmit() { let expectedSendString = "52-[\"test\",{\"data1\":{\"_placeholder\":true,\"num\":0},\"data2\":{\"_placeholder\":true,\"num\":1}}]" - let sendData = ["test" as AnyObject, ["data1": data, "data2": data2] as NSDictionary] as [AnyObject] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/", ack: false) + let sendData: [Any] = ["test", ["data1": data, "data2": data2] as NSDictionary] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data, data2]) @@ -82,7 +82,7 @@ class SocketBasicPacketTest: XCTestCase { func testEmitWithAck() { let expectedSendString = "20[\"test\"]" let sendData = ["test"] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/", ack: false) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, @@ -91,8 +91,8 @@ class SocketBasicPacketTest: XCTestCase { func testEmitDataWithAck() { let expectedSendString = "51-0[\"test\",{\"_placeholder\":true,\"num\":0}]" - let sendData = ["test" as AnyObject, data as AnyObject] as [AnyObject] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/", ack: false) + let sendData: [Any] = ["test", data] + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data]) @@ -117,7 +117,7 @@ class SocketBasicPacketTest: XCTestCase { func testStringAck() { let expectedSendString = "30[\"test\"]" let sendData = ["test"] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/", ack: true) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/", ack: true) XCTAssertEqual(packet.packetString, expectedSendString) } @@ -125,7 +125,7 @@ class SocketBasicPacketTest: XCTestCase { func testJSONAck() { let expectedSendString = "30[{\"test\":\"hello\",\"hello\":1,\"foobar\":true,\"null\":null}]" let sendData = [["foobar": true, "hello": 1, "test": "hello", "null": NSNull()]] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/", ack: true) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/", ack: true) XCTAssertEqual(packet.packetString, expectedSendString) } @@ -133,7 +133,7 @@ class SocketBasicPacketTest: XCTestCase { func testBinaryAck() { let expectedSendString = "61-0[{\"_placeholder\":true,\"num\":0}]" let sendData = [data] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/", ack: true) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/", ack: true) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data]) @@ -142,7 +142,7 @@ class SocketBasicPacketTest: XCTestCase { func testMultipleBinaryAck() { let expectedSendString = "62-0[{\"data2\":{\"_placeholder\":true,\"num\":0},\"data1\":{\"_placeholder\":true,\"num\":1}}]" let sendData = [["data1": data, "data2": data2]] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/", ack: true) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/", ack: true) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data2, data]) diff --git a/SocketIO-MacTests/SocketEngineTest.swift b/SocketIO-MacTests/SocketEngineTest.swift index 1880fd4..b797e04 100644 --- a/SocketIO-MacTests/SocketEngineTest.swift +++ b/SocketIO-MacTests/SocketEngineTest.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import SocketIOClientSwift +@testable import SocketIO class SocketEngineTest: XCTestCase { var client: SocketIOClient! @@ -89,14 +89,14 @@ class SocketEngineTest: XCTestCase { func testEncodeURLProperly() { engine.connectParams = [ - "created": "2016-05-04T18:31:15+0200" as AnyObject + "created": "2016-05-04T18:31:15+0200" ] XCTAssertEqual(engine.urlPolling.query, "transport=polling&b64=1&created=2016-05-04T18%3A31%3A15%2B0200") XCTAssertEqual(engine.urlWebSocket.query, "transport=websocket&created=2016-05-04T18%3A31%3A15%2B0200") engine.connectParams = [ - "forbidden": "!*'();:@&=+$,/?%#[]\" {}" as AnyObject + "forbidden": "!*'();:@&=+$,/?%#[]\" {}" ] XCTAssertEqual(engine.urlPolling.query, "transport=polling&b64=1&forbidden=%21%2A%27%28%29%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23%5B%5D%22%20%7B%7D") diff --git a/SocketIO-MacTests/SocketIOClientConfigurationTest.swift b/SocketIO-MacTests/SocketIOClientConfigurationTest.swift index 0760438..9b5c50a 100644 --- a/SocketIO-MacTests/SocketIOClientConfigurationTest.swift +++ b/SocketIO-MacTests/SocketIOClientConfigurationTest.swift @@ -7,7 +7,7 @@ // import XCTest -import SocketIOClientSwift +import SocketIO class TestSocketIOClientConfiguration: XCTestCase { var config = [] as SocketIOClientConfiguration diff --git a/SocketIO-MacTests/SocketNamespacePacketTest.swift b/SocketIO-MacTests/SocketNamespacePacketTest.swift index 435e9e3..6b0a474 100644 --- a/SocketIO-MacTests/SocketNamespacePacketTest.swift +++ b/SocketIO-MacTests/SocketNamespacePacketTest.swift @@ -7,7 +7,7 @@ // import XCTest -@testable import SocketIOClientSwift +@testable import SocketIO class SocketNamespacePacketTest: XCTestCase { let data = "test".data(using: String.Encoding.utf8)! @@ -15,40 +15,40 @@ class SocketNamespacePacketTest: XCTestCase { func testEmpyEmit() { let expectedSendString = "2/swift,[\"test\"]" - let sendData = ["test"] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/swift", ack: false) + let sendData: [Any] = ["test"] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testNullEmit() { let expectedSendString = "2/swift,[\"test\",null]" - let sendData = ["test", NSNull()] as [Any] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/swift", ack: false) + let sendData: [Any] = ["test", NSNull()] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testStringEmit() { let expectedSendString = "2/swift,[\"test\",\"foo bar\"]" - let sendData = ["test", "foo bar"] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/swift", ack: false) + let sendData: [Any] = ["test", "foo bar"] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testJSONEmit() { let expectedSendString = "2/swift,[\"test\",{\"test\":\"hello\",\"hello\":1,\"foobar\":true,\"null\":null}]" - let sendData = ["test" as AnyObject, ["foobar": true, "hello": 1, "test": "hello", "null": NSNull()] as NSDictionary] as [AnyObject] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/swift", ack: false) + let sendData: [Any] = ["test", ["foobar": true, "hello": 1, "test": "hello", "null": NSNull()] as NSDictionary] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testArrayEmit() { let expectedSendString = "2/swift,[\"test\",[\"hello\",true,{\"test\":\"test\"}]]" - let sendData = ["test", ["hello", 1, ["test": "test"]]] as [Any] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/swift", ack: false) + let sendData: [Any] = ["test", ["hello", 1, ["test": "test"]]] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) @@ -56,8 +56,8 @@ class SocketNamespacePacketTest: XCTestCase { func testBinaryEmit() { let expectedSendString = "51-/swift,[\"test\",{\"_placeholder\":true,\"num\":0}]" - let sendData = ["test" as AnyObject, data as AnyObject] as [AnyObject] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/swift", ack: false) + let sendData: [Any] = ["test", data] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data]) @@ -65,8 +65,8 @@ class SocketNamespacePacketTest: XCTestCase { func testMultipleBinaryEmit() { let expectedSendString = "52-/swift,[\"test\",{\"data1\":{\"_placeholder\":true,\"num\":0},\"data2\":{\"_placeholder\":true,\"num\":1}}]" - let sendData = ["test" as AnyObject, ["data1": data, "data2": data2] as NSDictionary] as [AnyObject] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: -1, nsp: "/swift", ack: false) + let sendData: [Any] = ["test", ["data1": data, "data2": data2] as NSDictionary] + let packet = SocketPacket.packetFromEmit(sendData, id: -1, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data, data2]) @@ -75,15 +75,15 @@ class SocketNamespacePacketTest: XCTestCase { func testEmitWithAck() { let expectedSendString = "2/swift,0[\"test\"]" let sendData = ["test"] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/swift", ack: false) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) } func testEmitDataWithAck() { let expectedSendString = "51-/swift,0[\"test\",{\"_placeholder\":true,\"num\":0}]" - let sendData = ["test" as AnyObject, data as AnyObject] as [AnyObject] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/swift", ack: false) + let sendData: [Any] = ["test", data] + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/swift", ack: false) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data]) @@ -108,7 +108,7 @@ class SocketNamespacePacketTest: XCTestCase { func testStringAck() { let expectedSendString = "3/swift,0[\"test\"]" let sendData = ["test"] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/swift", ack: true) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/swift", ack: true) XCTAssertEqual(packet.packetString, expectedSendString) } @@ -116,7 +116,7 @@ class SocketNamespacePacketTest: XCTestCase { func testJSONAck() { let expectedSendString = "3/swift,0[{\"test\":\"hello\",\"hello\":1,\"foobar\":true,\"null\":null}]" let sendData = [["foobar": true, "hello": 1, "test": "hello", "null": NSNull()]] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/swift", ack: true) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/swift", ack: true) XCTAssertEqual(packet.packetString, expectedSendString) } @@ -124,7 +124,7 @@ class SocketNamespacePacketTest: XCTestCase { func testBinaryAck() { let expectedSendString = "61-/swift,0[{\"_placeholder\":true,\"num\":0}]" let sendData = [data] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/swift", ack: true) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/swift", ack: true) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data]) @@ -133,7 +133,7 @@ class SocketNamespacePacketTest: XCTestCase { func testMultipleBinaryAck() { let expectedSendString = "62-/swift,0[{\"data2\":{\"_placeholder\":true,\"num\":0},\"data1\":{\"_placeholder\":true,\"num\":1}}]" let sendData = [["data1": data, "data2": data2]] - let packet = SocketPacket.packetFromEmit(sendData as [AnyObject], id: 0, nsp: "/swift", ack: true) + let packet = SocketPacket.packetFromEmit(sendData, id: 0, nsp: "/swift", ack: true) XCTAssertEqual(packet.packetString, expectedSendString) XCTAssertEqual(packet.binary, [data2, data]) diff --git a/SocketIO-MacTests/SocketObjectiveCTest.m b/SocketIO-MacTests/SocketObjectiveCTest.m index c8a4956..978f99a 100644 --- a/SocketIO-MacTests/SocketObjectiveCTest.m +++ b/SocketIO-MacTests/SocketObjectiveCTest.m @@ -8,7 +8,7 @@ // #import -@import SocketIOClientSwift; +@import SocketIO; @interface SocketObjectiveCTest : XCTestCase diff --git a/SocketIO-MacTests/SocketParserTest.swift b/SocketIO-MacTests/SocketParserTest.swift index 841057a..5e85798 100644 --- a/SocketIO-MacTests/SocketParserTest.swift +++ b/SocketIO-MacTests/SocketParserTest.swift @@ -7,27 +7,27 @@ // import XCTest -@testable import SocketIOClientSwift +@testable import SocketIO class SocketParserTest: XCTestCase { let testSocket = SocketIOClient(socketURL: URL(string: "http://localhost/")!) //Format key: message; namespace-data-binary-id - static let packetTypes: [String: (String, [AnyObject], [Data], Int)] = [ + static let packetTypes: [String: (String, [Any], [Data], Int)] = [ "0": ("/", [], [], -1), "1": ("/", [], [], -1), - "25[\"test\"]": ("/", ["test" as AnyObject], [], 5), - "2[\"test\",\"~~0\"]": ("/", ["test" as AnyObject, "~~0" as AnyObject], [], -1), - "2/swift,[\"testArrayEmitReturn\",[\"test3\",\"test4\"]]": ("/swift", ["testArrayEmitReturn" as AnyObject, ["test3" as AnyObject, "test4" as AnyObject] as NSArray], [], -1), - "51-/swift,[\"testMultipleItemsWithBufferEmitReturn\",[1,2],{\"test\":\"bob\"},25,\"polo\",{\"_placeholder\":true,\"num\":0}]": ("/swift", ["testMultipleItemsWithBufferEmitReturn" as AnyObject, [1, 2] as NSArray, ["test": "bob"] as NSDictionary, 25 as AnyObject, "polo" as AnyObject, ["_placeholder": true, "num": 0] as NSDictionary], [], -1), + "25[\"test\"]": ("/", ["test"], [], 5), + "2[\"test\",\"~~0\"]": ("/", ["test", "~~0"], [], -1), + "2/swift,[\"testArrayEmitReturn\",[\"test3\",\"test4\"]]": ("/swift", ["testArrayEmitReturn", ["test3", "test4"] as NSArray], [], -1), + "51-/swift,[\"testMultipleItemsWithBufferEmitReturn\",[1,2],{\"test\":\"bob\"},25,\"polo\",{\"_placeholder\":true,\"num\":0}]": ("/swift", ["testMultipleItemsWithBufferEmitReturn", [1, 2] as NSArray, ["test": "bob"] as NSDictionary, 25, "polo", ["_placeholder": true, "num": 0] as NSDictionary], [], -1), "3/swift,0[[\"test3\",\"test4\"]]": ("/swift", [["test3", "test4"] as NSArray], [], 0), "61-/swift,19[[1,2],{\"test\":\"bob\"},25,\"polo\",{\"_placeholder\":true,\"num\":0}]": - ("/swift", [ [1, 2] as NSArray, ["test": "bob"] as NSDictionary, 25 as AnyObject, "polo" as AnyObject, ["_placeholder": true, "num": 0] as NSDictionary], [], 19), + ("/swift", [ [1, 2] as NSArray, ["test": "bob"] as NSDictionary, 25, "polo", ["_placeholder": true, "num": 0] as NSDictionary], [], 19), "4/swift,": ("/swift", [], [], -1), "0/swift": ("/swift", [], [], -1), "1/swift": ("/swift", [], [], -1), - "4\"ERROR\"": ("/", ["ERROR" as AnyObject], [], -1), + "4\"ERROR\"": ("/", ["ERROR"], [], -1), "4{\"test\":2}": ("/", [["test": 2] as NSDictionary], [], -1), - "41": ("/", [1 as AnyObject], [], -1)] + "41": ("/", [1], [], -1)] func testDisconnect() { let message = "1" @@ -120,7 +120,7 @@ class SocketParserTest: XCTestCase { func validateParseResult(_ message: String) { let validValues = SocketParserTest.packetTypes[message]! let packet = testSocket.parseString(message) - let type = message.substring(with: Range(message.startIndex.. SocketIOClient? { + open subscript(string: String) -> SocketIOClient? { get { return sockets[string] } @@ -58,15 +58,15 @@ public final class SocketClientManager : NSObject { } } - public func addSocket(_ socket: SocketIOClient, labeledAs label: String) { + open func addSocket(_ socket: SocketIOClient, labeledAs label: String) { sockets[label] = socket } - public func removeSocket(withLabel label: String) -> SocketIOClient? { + open func removeSocket(withLabel label: String) -> SocketIOClient? { return sockets.removeValue(forKey: label) } - public func removeSocket(_ socket: SocketIOClient) -> SocketIOClient? { + open func removeSocket(_ socket: SocketIOClient) -> SocketIOClient? { var returnSocket: SocketIOClient? for (label, dictSocket) in sockets where dictSocket === socket { @@ -76,7 +76,7 @@ public final class SocketClientManager : NSObject { return returnSocket } - public func removeSockets() { + open func removeSockets() { sockets.removeAll() } } diff --git a/Source/SocketEngine.swift b/Source/SocketEngine.swift index e84c20a..9415f51 100644 --- a/Source/SocketEngine.swift +++ b/Source/SocketEngine.swift @@ -29,7 +29,7 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll public let handleQueue = DispatchQueue(label: "com.socketio.engineHandleQueue", attributes: []) public let parseQueue = DispatchQueue(label: "com.socketio.engineParseQueue", attributes: []) - public var connectParams: [String: AnyObject]? { + public var connectParams: [String: Any]? { didSet { (urlPolling, urlWebSocket) = createURLs() } @@ -83,7 +83,6 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll public init(client: SocketEngineClient, url: URL, config: SocketIOClientConfiguration) { self.client = client self.url = url - for option in config { switch option { case let .connectParams(params): @@ -357,41 +356,43 @@ public final class SocketEngine : NSObject, URLSessionDelegate, SocketEnginePoll } private func handleOpen(openData: String) { - do { - let json = try openData.toNSDictionary() - - if let sid = json["sid"] as? String { - let upgradeWs: Bool - - self.sid = sid - connected = true - - if let upgrades = json["upgrades"] as? [String] { - upgradeWs = upgrades.contains("websocket") - } else { - upgradeWs = false - } - - if let pingInterval = json["pingInterval"] as? Double, let pingTimeout = json["pingTimeout"] as? Double { - self.pingInterval = pingInterval / 1000.0 - self.pingTimeout = pingTimeout / 1000.0 - } - - if !forcePolling && !forceWebsockets && upgradeWs { - createWebsocketAndConnect() - } - - sendPing() - - if !forceWebsockets { - doPoll() - } - - client?.engineDidOpen(reason: "Connect") - } - } catch { + guard let json = try? openData.toNSDictionary() else { didError(reason: "Error parsing open packet") + return } + + guard let sid = json["sid"] as? String else { + didError(reason: "Open packet contained no sid") + return + } + + let upgradeWs: Bool + + self.sid = sid + connected = true + + if let upgrades = json["upgrades"] as? [String] { + upgradeWs = upgrades.contains("websocket") + } else { + upgradeWs = false + } + + if let pingInterval = json["pingInterval"] as? Double, let pingTimeout = json["pingTimeout"] as? Double { + self.pingInterval = pingInterval / 1000.0 + self.pingTimeout = pingTimeout / 1000.0 + } + + if !forcePolling && !forceWebsockets && upgradeWs { + createWebsocketAndConnect() + } + + sendPing() + + if !forceWebsockets { + doPoll() + } + + client?.engineDidOpen(reason: "Connect") } private func handlePong(with message: String) { diff --git a/Source/SocketEngineSpec.swift b/Source/SocketEngineSpec.swift index bf757b8..f862889 100644 --- a/Source/SocketEngineSpec.swift +++ b/Source/SocketEngineSpec.swift @@ -29,7 +29,7 @@ import Foundation weak var client: SocketEngineClient? { get set } var closed: Bool { get } var connected: Bool { get } - var connectParams: [String: AnyObject]? { get set } + var connectParams: [String: Any]? { get set } var doubleEncodeUTF8: Bool { get } var cookies: [HTTPCookie]? { get } var extraHeaders: [String: String]? { get } diff --git a/Source/SocketEventHandler.swift b/Source/SocketEventHandler.swift index bb82abf..5497f7f 100644 --- a/Source/SocketEventHandler.swift +++ b/Source/SocketEventHandler.swift @@ -29,7 +29,7 @@ struct SocketEventHandler { let id: UUID let callback: NormalCallback - func executeCallback(with items: [AnyObject], withAck ack: Int, withSocket socket: SocketIOClient) { + func executeCallback(with items: [Any], withAck ack: Int, withSocket socket: SocketIOClient) { callback(items, SocketAckEmitter(socket: socket, ackNum: ack)) } } diff --git a/Source/SocketExtensions.swift b/Source/SocketExtensions.swift index 7280bba..c3459bc 100644 --- a/Source/SocketExtensions.swift +++ b/Source/SocketExtensions.swift @@ -30,13 +30,6 @@ enum JSONError : Error { } extension Array { - /// Because Swift 3 removes a lot of implicit briding so we have to perform more explicit bridging - func toAnyObjectArray() -> [AnyObject] { - return flatMap({ $0 as AnyObject }) - } -} - -extension Array where Element: AnyObject { func toJSON() throws -> Data { return try JSONSerialization.data(withJSONObject: self as NSArray, options: JSONSerialization.WritingOptions(rawValue: 0)) } @@ -49,9 +42,9 @@ extension CharacterSet { } extension NSDictionary { - private static func keyValueToSocketIOClientOption(key: String, value: AnyObject) -> SocketIOClientOption? { + private static func keyValueToSocketIOClientOption(key: String, value: Any) -> SocketIOClientOption? { switch (key, value) { - case let ("connectParams", params as [String: AnyObject]): + case let ("connectParams", params as [String: Any]): return .connectParams(params) case let ("cookies", cookies as [HTTPCookie]): return .cookies(cookies) @@ -100,7 +93,7 @@ extension NSDictionary { var options = [] as SocketIOClientConfiguration for (rawKey, value) in self { - if let key = rawKey as? String, let opt = NSDictionary.keyValueToSocketIOClientOption(key: key, value: value as AnyObject) { + if let key = rawKey as? String, let opt = NSDictionary.keyValueToSocketIOClientOption(key: key, value: value) { options.insert(opt) } } @@ -110,9 +103,9 @@ extension NSDictionary { } extension String { - func toArray() throws -> [AnyObject] { + func toArray() throws -> [Any] { guard let stringData = data(using: .utf8, allowLossyConversion: false) else { return [] } - guard let array = try JSONSerialization.jsonObject(with: stringData, options: .mutableContainers) as? [AnyObject] else { + guard let array = try JSONSerialization.jsonObject(with: stringData, options: .mutableContainers) as? [Any] else { throw JSONError.notArray } diff --git a/Source/SocketIOClient.swift b/Source/SocketIOClient.swift index 22a5e88..7d27377 100644 --- a/Source/SocketIOClient.swift +++ b/Source/SocketIOClient.swift @@ -151,33 +151,33 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable let time = DispatchTime.now() + Double(Int64(timeoutAfter) * Int64(NSEC_PER_SEC)) / Double(NSEC_PER_SEC) handleQueue.asyncAfter(deadline: time) {[weak self] in - if let this = self, this.status != .connected && this.status != .disconnected { - this.status = .disconnected - this.engine?.disconnect(reason: "Connect timeout") - - handler?() - } + guard let this = self, this.status != .connected && this.status != .disconnected else { return } + + this.status = .disconnected + this.engine?.disconnect(reason: "Connect timeout") + + handler?() } } - private func createOnAck(_ items: [AnyObject]) -> OnAckCallback { + private func createOnAck(_ items: [Any]) -> OnAckCallback { currentAck += 1 return {[weak self, ack = currentAck] timeout, callback in - if let this = self { - this.ackQueue.sync() { - this.ackHandlers.addAck(ack, callback: callback) - } + guard let this = self else { return } + + this.ackQueue.sync() { + this.ackHandlers.addAck(ack, callback: callback) + } + + + this._emit(items, ack: ack) + + if timeout != 0 { + let time = DispatchTime.now() + Double(Int64(timeout * NSEC_PER_SEC)) / Double(NSEC_PER_SEC) - - this._emit(items, ack: ack) - - if timeout != 0 { - let time = DispatchTime.now() + Double(Int64(timeout * NSEC_PER_SEC)) / Double(NSEC_PER_SEC) - - this.handleQueue.asyncAfter(deadline: time) { - this.ackHandlers.timeoutAck(ack, onQueue: this.handleQueue) - } + this.handleQueue.asyncAfter(deadline: time) { + this.ackHandlers.timeoutAck(ack, onQueue: this.handleQueue) } } } @@ -197,17 +197,16 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable DefaultSocketLogger.Logger.log("Disconnected: %@", type: logType, args: reason) + reconnecting = false status = .disconnected // Make sure the engine is actually dead. engine?.disconnect(reason: reason) - handleEvent("disconnect", data: [reason as AnyObject], isInternalMessage: true) + handleEvent("disconnect", data: [reason], isInternalMessage: true) } /// Disconnects the socket. public func disconnect() { - assert(status != .notConnected, "Tried closing a NotConnected client") - DefaultSocketLogger.Logger.log("Closing socket", type: logType) didDisconnect(reason: "Disconnect") @@ -215,34 +214,34 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable /// Send a message to the server public func emit(_ event: String, _ items: SocketData...) { - emit(event, with: items.toAnyObjectArray()) + emit(event, with: items) } /// Same as emit, but meant for Objective-C - public func emit(_ event: String, with items: [AnyObject]) { + public func emit(_ event: String, with items: [Any]) { guard status == .connected else { - handleEvent("error", data: ["Tried emitting \(event) when not connected" as AnyObject], isInternalMessage: true) + handleEvent("error", data: ["Tried emitting \(event) when not connected"], isInternalMessage: true) return } - _emit([event as AnyObject] + items) + _emit([event] + items) } /// Sends a message to the server, requesting an ack. Use the onAck method of SocketAckHandler to add /// an ack. public func emitWithAck(_ event: String, _ items: SocketData...) -> OnAckCallback { - return emitWithAck(event, with: items.toAnyObjectArray()) + return emitWithAck(event, with: items) } /// Same as emitWithAck, but for Objective-C - public func emitWithAck(_ event: String, with items: [AnyObject]) -> OnAckCallback { - return createOnAck([event as AnyObject] + items) + public func emitWithAck(_ event: String, with items: [Any]) -> OnAckCallback { + return createOnAck([event] + items) } - private func _emit(_ data: [AnyObject], ack: Int? = nil) { + private func _emit(_ data: [Any], ack: Int? = nil) { emitQueue.async { guard self.status == .connected else { - self.handleEvent("error", data: ["Tried emitting when not connected" as AnyObject], isInternalMessage: true) + self.handleEvent("error", data: ["Tried emitting when not connected"], isInternalMessage: true) return } @@ -256,7 +255,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable } // If the server wants to know that the client received data - func emitAck(_ ack: Int, with items: [AnyObject]) { + func emitAck(_ ack: Int, with items: [Any]) { emitQueue.async { if self.status == .connected { let packet = SocketPacket.packetFromEmit(items, id: ack, nsp: self.nsp, ack: true) @@ -288,7 +287,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable public func engineDidError(reason: String) { DefaultSocketLogger.Logger.error("%@", type: logType, args: reason) - handleEvent("error", data: [reason as AnyObject], isInternalMessage: true) + handleEvent("error", data: [reason], isInternalMessage: true) } public func engineDidOpen(reason: String) { @@ -296,7 +295,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable } // Called when the socket gets an ack for something it sent - func handleAck(_ ack: Int, data: [AnyObject]) { + func handleAck(_ ack: Int, data: [Any]) { guard status == .connected else { return } DefaultSocketLogger.Logger.log("Handling ack: %@ with data: %@", type: logType, args: ack, data) @@ -307,7 +306,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable } /// Causes an event to be handled. Only use if you know what you're doing. - public func handleEvent(_ event: String, data: [AnyObject], isInternalMessage: Bool, withAck ack: Int = -1) { + public func handleEvent(_ event: String, data: [Any], isInternalMessage: Bool, withAck ack: Int = -1) { guard status == .connected || isInternalMessage else { return } DefaultSocketLogger.Logger.log("Handling event: %@ with data: %@", type: logType, args: event, data) @@ -416,7 +415,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable guard reconnecting else { return } DefaultSocketLogger.Logger.log("Starting reconnect", type: logType) - handleEvent("reconnect", data: [reason as AnyObject], isInternalMessage: true) + handleEvent("reconnect", data: [reason], isInternalMessage: true) _tryReconnect() } @@ -429,7 +428,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable } DefaultSocketLogger.Logger.log("Trying to reconnect", type: logType) - handleEvent("reconnectAttempt", data: [(reconnectAttempts - currentReconnectAttempt) as AnyObject], + handleEvent("reconnectAttempt", data: [(reconnectAttempts - currentReconnectAttempt)], isInternalMessage: true) currentReconnectAttempt += 1 @@ -454,7 +453,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable self.engine = engine } - func emitTest(event: String, _ data: AnyObject...) { - _emit([event as AnyObject] + data) + func emitTest(event: String, _ data: Any...) { + _emit([event] + data) } } diff --git a/Source/SocketIOClientOption.swift b/Source/SocketIOClientOption.swift index b20c438..dd723f4 100644 --- a/Source/SocketIOClientOption.swift +++ b/Source/SocketIOClientOption.swift @@ -25,11 +25,11 @@ import Foundation protocol ClientOption : CustomStringConvertible, Equatable { - func getSocketIOOptionValue() -> AnyObject + func getSocketIOOptionValue() -> Any } public enum SocketIOClientOption : ClientOption { - case connectParams([String: AnyObject]) + case connectParams([String: Any]) case cookies([HTTPCookie]) case doubleEncodeUTF8(Bool) case extraHeaders([String: String]) @@ -99,50 +99,50 @@ public enum SocketIOClientOption : ClientOption { return description } - func getSocketIOOptionValue() -> AnyObject { - let value: AnyObject + func getSocketIOOptionValue() -> Any { + let value: Any switch self { case let .connectParams(params): - value = params as AnyObject + value = params case let .cookies(cookies): - value = cookies as AnyObject + value = cookies case let .doubleEncodeUTF8(encode): - value = encode as AnyObject + value = encode case let .extraHeaders(headers): - value = headers as AnyObject + value = headers case let .forceNew(force): - value = force as AnyObject + value = force case let .forcePolling(force): - value = force as AnyObject + value = force case let .forceWebsockets(force): - value = force as AnyObject + value = force case let .handleQueue(queue): - value = queue as AnyObject + value = queue case let .log(log): - value = log as AnyObject + value = log case let .logger(logger): - value = logger as AnyObject + value = logger case let .nsp(nsp): - value = nsp as AnyObject + value = nsp case let .path(path): - value = path as AnyObject + value = path case let .reconnects(reconnects): - value = reconnects as AnyObject + value = reconnects case let .reconnectAttempts(attempts): - value = attempts as AnyObject + value = attempts case let .reconnectWait(wait): - value = wait as AnyObject + value = wait case let .secure(secure): - value = secure as AnyObject + value = secure case let .security(security): value = security case let .selfSigned(signed): - value = signed as AnyObject + value = signed case let .sessionDelegate(delegate): - value = delegate as AnyObject + value = delegate case let .voipEnabled(enabled): - value = enabled as AnyObject + value = enabled } return value diff --git a/Source/SocketIOClientSpec.swift b/Source/SocketIOClientSpec.swift index 1e2051c..e91c840 100644 --- a/Source/SocketIOClientSpec.swift +++ b/Source/SocketIOClientSpec.swift @@ -29,8 +29,8 @@ protocol SocketIOClientSpec : class { func didConnect() func didDisconnect(reason: String) func didError(reason: String) - func handleAck(_ ack: Int, data: [AnyObject]) - func handleEvent(_ event: String, data: [AnyObject], isInternalMessage: Bool, withAck ack: Int) + func handleAck(_ ack: Int, data: [Any]) + func handleEvent(_ event: String, data: [Any], isInternalMessage: Bool, withAck ack: Int) func joinNamespace(_ namespace: String) } @@ -38,6 +38,6 @@ extension SocketIOClientSpec { func didError(reason: String) { DefaultSocketLogger.Logger.error("%@", type: "SocketIOClient", args: reason) - handleEvent("error", data: [reason as AnyObject], isInternalMessage: true, withAck: -1) + handleEvent("error", data: [reason], isInternalMessage: true, withAck: -1) } } diff --git a/Source/SocketPacket.swift b/Source/SocketPacket.swift index 71a79d8..99437a9 100644 --- a/Source/SocketPacket.swift +++ b/Source/SocketPacket.swift @@ -39,9 +39,9 @@ struct SocketPacket { let type: PacketType var binary: [Data] - var data: [AnyObject] + var data: [Any] - var args: [AnyObject] { + var args: [Any] { if type == .event || type == .binaryEvent && data.count != 0 { return Array(data.dropFirst()) } else { @@ -62,7 +62,7 @@ struct SocketPacket { return createPacketString() } - init(type: PacketType, data: [AnyObject] = [AnyObject](), id: Int = -1, + init(type: PacketType, data: [Any] = [Any](), id: Int = -1, nsp: String, placeholders: Int = 0, binary: [Data] = [Data]()) { self.data = data self.id = id @@ -132,19 +132,19 @@ struct SocketPacket { // If object is a collection it will recurse // Returns the object if it is not a placeholder or the corresponding // binary data - private func _fillInPlaceholders(_ object: AnyObject) -> AnyObject { + private func _fillInPlaceholders(_ object: Any) -> Any { switch object { - case let dict as [AnyHashable: AnyObject]: + case let dict as [String: Any]: if dict["_placeholder"] as? Bool ?? false { - return binary[dict["num"] as! Int] as AnyObject + return binary[dict["num"] as! Int] } else { return dict.reduce(NSMutableDictionary(), {cur, keyValue in - cur[keyValue.0 as! NSCopying] = _fillInPlaceholders(keyValue.1 as AnyObject) + cur[keyValue.0] = _fillInPlaceholders(keyValue.1) return cur }) } - case let arr as [AnyObject]: - return arr.map(_fillInPlaceholders) as AnyObject + case let arr as [Any]: + return arr.map(_fillInPlaceholders) default: return object } @@ -167,7 +167,7 @@ extension SocketPacket { } } - static func packetFromEmit(_ items: [AnyObject], id: Int, nsp: String, ack: Bool) -> SocketPacket { + static func packetFromEmit(_ items: [Any], id: Int, nsp: String, ack: Bool) -> SocketPacket { let (parsedData, binary) = deconstructData(items) let packet = SocketPacket(type: findType(binary.count, ack: ack), data: parsedData, id: id, nsp: nsp, binary: binary) @@ -178,23 +178,23 @@ extension SocketPacket { private extension SocketPacket { // Recursive function that looks for NSData in collections - static func shred(_ data: AnyObject, binary: inout [Data]) -> AnyObject { - let placeholder = ["_placeholder": true, "num": binary.count as AnyObject] as [String : Any] + static func shred(_ data: Any, binary: inout [Data]) -> Any { + let placeholder = ["_placeholder": true, "num": binary.count] as [String : Any] switch data { case let bin as Data: binary.append(bin) - return placeholder as AnyObject - case let arr as [AnyObject]: - return arr.map({shred($0, binary: &binary)}) as AnyObject - case let dict as [AnyHashable: AnyObject]: - return dict.reduce([AnyHashable: AnyObject](), {cur, keyValue in + return placeholder + case let arr as [Any]: + return arr.map({shred($0, binary: &binary)}) + case let dict as [String: Any]: + return dict.reduce([String: Any](), {cur, keyValue in var mutCur = cur - mutCur[keyValue.0] = shred(keyValue.1 as AnyObject, binary: &binary) + mutCur[keyValue.0] = shred(keyValue.1, binary: &binary) return mutCur - }) as AnyObject + }) default: return data } @@ -202,7 +202,7 @@ private extension SocketPacket { // Removes binary data from emit data // Returns a type containing the de-binaryed data and the binary - static func deconstructData(_ data: [AnyObject]) -> ([AnyObject], [Data]) { + static func deconstructData(_ data: [Any]) -> ([Any], [Data]) { var binary = [Data]() return (data.map({shred($0, binary: &binary)}), binary) diff --git a/Source/SocketParsable.swift b/Source/SocketParsable.swift index bac3f20..c046893 100644 --- a/Source/SocketParsable.swift +++ b/Source/SocketParsable.swift @@ -32,8 +32,8 @@ extension SocketParsable { return nsp == self.nsp } - private func handleConnect(_ p: SocketPacket) { - if p.nsp == "/" && nsp != "/" { + private func handleConnect(_ packetNamespace: String) { + if packetNamespace == "/" && nsp != "/" { joinNamespace(nsp) } else { didConnect() @@ -51,7 +51,7 @@ extension SocketParsable { case .binaryAck where isCorrectNamespace(pack.nsp): waitingPackets.append(pack) case .connect: - handleConnect(pack) + handleConnect(pack.nsp) case .disconnect: didDisconnect(reason: "Got Disconnect") case .error: @@ -65,7 +65,7 @@ extension SocketParsable { func parseString(_ message: String) -> Either { var reader = SocketStringReader(message: message) - guard let type = SocketPacket.PacketType(rawValue: Int(reader.read(count: 1)) ?? -1) else { + guard let type = Int(reader.read(count: 1)).flatMap({ SocketPacket.PacketType(rawValue: $0) }) else { return .left("Invalid packet type") } @@ -112,7 +112,7 @@ extension SocketParsable { switch parseData(d) { case let .left(err): // Errors aren't always enclosed in an array - if case let .right(data) = parseData("\([d as AnyObject])") { + if case let .right(data) = parseData("[\(d)]") { return .right(SocketPacket(type: type, data: data, id: Int(idString) ?? -1, nsp: namespace, placeholders: placeholders)) } else { @@ -125,7 +125,7 @@ extension SocketParsable { } // Parses data for events - private func parseData(_ data: String) -> Either { + private func parseData(_ data: String) -> Either { do { return .right(try data.toArray()) } catch { diff --git a/Source/SocketTypes.swift b/Source/SocketTypes.swift index 25cb8f7..42bf329 100644 --- a/Source/SocketTypes.swift +++ b/Source/SocketTypes.swift @@ -39,8 +39,8 @@ extension NSString : SocketData {} extension NSNull : SocketData {} extension String : SocketData {} -public typealias AckCallback = ([AnyObject]) -> Void -public typealias NormalCallback = ([AnyObject], SocketAckEmitter) -> Void +public typealias AckCallback = ([Any]) -> Void +public typealias NormalCallback = ([Any], SocketAckEmitter) -> Void public typealias OnAckCallback = (_ timeoutAfter: UInt64, _ callback: @escaping AckCallback) -> Void typealias Probe = (msg: String, type: SocketEnginePacketType, data: [Data]) diff --git a/Source/WebSocket.swift b/Source/WebSocket.swift index 6fd2178..8b1b022 100644 --- a/Source/WebSocket.swift +++ b/Source/WebSocket.swift @@ -367,7 +367,7 @@ public class WebSocket : NSObject, StreamDelegate { // Delegate for the stream methods. Processes incoming bytes. public func stream(_ aStream: Stream, handle eventCode: Stream.Event) { if let sec = security , !certValidated && [.hasBytesAvailable, .hasSpaceAvailable].contains(eventCode) { - let possibleTrust = aStream.property(forKey: kCFStreamPropertySSLPeerTrust as Stream.PropertyKey) as AnyObject + let possibleTrust = aStream.property(forKey: kCFStreamPropertySSLPeerTrust as Stream.PropertyKey) let domain = aStream.property(forKey: kCFStreamSSLPeerName as Stream.PropertyKey) as? String if sec.isValid(possibleTrust as! SecTrust, domain: domain) { certValidated = true