diff --git a/.github/workflows/swift.yml b/.github/workflows/swift.yml
new file mode 100644
index 00000000..d96fb492
--- /dev/null
+++ b/.github/workflows/swift.yml
@@ -0,0 +1,19 @@
+name: Swift
+
+on:
+ push:
+ branches: [ "master", "development" ]
+ pull_request:
+ branches: [ "master", "development" ]
+
+jobs:
+ build:
+
+ runs-on: macos-latest
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Build
+ run: swift build -v
+ - name: Run tests
+ run: swift test -v
diff --git a/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..919434a6
--- /dev/null
+++ b/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index b90dafc5..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-language: objective-c
-xcode_project: Socket.IO-Client-Swift.xcodeproj # path to your xcodeproj folder
-xcode_scheme: SocketIO-Mac
-osx_image: xcode12.2
-branches:
- only:
- - master
- - development
-before_install:
- # - brew update
- # - brew outdated xctool || brew upgrade xctool
- # - brew outdated carthage || brew upgrade carthage
- - carthage update --platform macosx
-script:
- - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO build test -quiet
-# - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO build-for-testing -quiet
-# - xctool -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO run-tests --parallelize
- - swift test
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7b496c25..6f0469a8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+# v16.1.0
+
+- Remove support for iOS 11.
+- Update to Starscream 4.0.6
+
# v16.0.0
- Removed Objective-C support. It's time for you to embrace Swift.
diff --git a/Cartfile b/Cartfile
index c9ec3353..a3c32e56 100644
--- a/Cartfile
+++ b/Cartfile
@@ -1 +1 @@
-github "emersonsoftware/Starscream" "master"
+github "daltoniam/Starscream" "4.0.8"
diff --git a/Cartfile.resolved b/Cartfile.resolved
index c9ec3353..a3c32e56 100644
--- a/Cartfile.resolved
+++ b/Cartfile.resolved
@@ -1 +1 @@
-github "emersonsoftware/Starscream" "master"
+github "daltoniam/Starscream" "4.0.8"
diff --git a/Package.resolved b/Package.resolved
index 2c23fa5a..cebbce98 100644
--- a/Package.resolved
+++ b/Package.resolved
@@ -5,9 +5,9 @@
"package": "Starscream",
"repositoryURL": "https://github.com/emersonsoftware/Starscream",
"state": {
- "branch": "master",
- "revision": "098f4fba787f43b27cb0db77464c52443cf7d3df",
- "version": null
+ "branch": null,
+ "revision": "c6bfd1af48efcc9a9ad203665db12375ba6b145a",
+ "version": "4.0.8"
}
}
]
diff --git a/Package.swift b/Package.swift
index bfcbf7a0..3eb325cc 100644
--- a/Package.swift
+++ b/Package.swift
@@ -1,4 +1,4 @@
-// swift-tools-version:5.3
+// swift-tools-version:5.4
import PackageDescription
@@ -8,7 +8,7 @@ let package = Package(
.library(name: "SocketIO", targets: ["SocketIO"])
],
dependencies: [
- .package(url: "https://github.com/emersonsoftware/Starscream", .branch("master")),
+ .package(url: "https://github.com/daltoniam/Starscream", from: "4.0.8"),
],
targets: [
.target(name: "SocketIO", dependencies: ["Starscream"]),
diff --git a/Socket.IO-Client-Swift.podspec b/Socket.IO-Client-Swift.podspec
index 60e68527..243071f0 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 = "SocketIO"
- s.version = "16.0.1"
+ s.version = "16.1.0"
s.summary = "Socket.IO-client for iOS and OS X"
s.description = <<-DESC
Socket.IO-client for iOS and OS X.
@@ -11,21 +11,21 @@ Pod::Spec.new do |s|
s.homepage = "https://github.com/socketio/socket.io-client-swift"
s.license = { :type => 'MIT' }
s.author = { "Erik" => "nuclear.ace@gmail.com" }
- s.ios.deployment_target = '10.0'
+ s.ios.deployment_target = '11.0'
s.osx.deployment_target = '10.13'
- s.tvos.deployment_target = '10.0'
+ s.tvos.deployment_target = '12.0'
s.watchos.deployment_target = '5.0'
s.requires_arc = true
s.source = {
:git => "https://github.com/socketio/socket.io-client-swift.git",
- :tag => 'v16.0.1',
+ :tag => 'v16.1.0',
:submodules => true
}
s.swift_version = "5"
s.pod_target_xcconfig = {
- 'SWIFT_VERSION' => '5.0'
+ 'SWIFT_VERSION' => '5.4'
}
s.source_files = "Source/SocketIO/**/*.swift", "Source/SocketIO/*.swift"
- s.dependency "Starscream", "~> 4.0"
+ s.dependency "Starscream", "~> 4.0.6"
end
diff --git a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj
index b832920b..85ae50d7 100644
--- a/Socket.IO-Client-Swift.xcodeproj/project.pbxproj
+++ b/Socket.IO-Client-Swift.xcodeproj/project.pbxproj
@@ -3,7 +3,7 @@
archiveVersion = 1;
classes = {
};
- objectVersion = 46;
+ objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
@@ -19,9 +19,9 @@
1C686BE71F869AFD007D8627 /* SocketParserTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C686BD71F869AF1007D8627 /* SocketParserTest.swift */; };
1C686BE81F869AFD007D8627 /* SocketNamespacePacketTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C686BD81F869AF1007D8627 /* SocketNamespacePacketTest.swift */; };
572EF2431B51F18A00EEBB58 /* SocketIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 572EF2381B51F18A00EEBB58 /* SocketIO.framework */; };
+ 579C7D4C2731B487009F8A2F /* Starscream.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 579C7D4B2731B487009F8A2F /* Starscream.xcframework */; };
6CA08A981D615C0B0061FD2A /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CA08A971D615C0B0061FD2A /* Security.framework */; };
74BF53581F894326004972D8 /* SocketIO.h in Headers */ = {isa = PBXBuildFile; fileRef = 572EF23C1B51F18A00EEBB58 /* SocketIO.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 74D0F5961F8053950037C4DC /* Starscream.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9432E00B1F77F883006AF628 /* Starscream.framework */; };
74DA21741F09440F009C19EE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 74DA21731F09440F009C19EE /* libz.tbd */; };
74DA217C1F09457B009C19EE /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 74DA21731F09440F009C19EE /* libz.tbd */; };
DD52B048C71D724ABBD18C71 /* SocketTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD52BDC9E66AADA2CC5E8246 /* SocketTypes.swift */; };
@@ -75,18 +75,15 @@
572EF23B1B51F18A00EEBB58 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
572EF23C1B51F18A00EEBB58 /* SocketIO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SocketIO.h; sourceTree = ""; };
572EF2421B51F18A00EEBB58 /* SocketIO-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SocketIO-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 579C7D4B2731B487009F8A2F /* Starscream.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Starscream.xcframework; path = Carthage/Build/Starscream.xcframework; sourceTree = ""; };
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; };
- 749FA19F1F8112E7002FBB30 /* Starscream.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = Starscream.framework.dSYM; path = Carthage/Build/Mac/Starscream.framework.dSYM; sourceTree = ""; };
749FA1A11F811408002FBB30 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
74D0F58D1F804FED0037C4DC /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk/usr/lib/libz.tbd; sourceTree = DEVELOPER_DIR; };
74DA21731F09440F009C19EE /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
74DA217D1F0945E9009C19EE /* libcommonCrypto.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libcommonCrypto.tbd; path = usr/lib/system/libcommonCrypto.tbd; sourceTree = SDKROOT; };
9432E0061F77F7CA006AF628 /* SSLSecurity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SSLSecurity.swift; sourceTree = ""; };
- 9432E0091F77F87D006AF628 /* Starscream.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Starscream.framework; path = Carthage/Build/iOS/Starscream.framework; sourceTree = ""; };
- 9432E00B1F77F883006AF628 /* Starscream.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Starscream.framework; path = Carthage/Build/Mac/Starscream.framework; sourceTree = ""; };
- 9432E00D1F77F889006AF628 /* Starscream.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Starscream.framework; path = Carthage/Build/tvOS/Starscream.framework; sourceTree = ""; };
DD52B078DB0A3C3D1BB507CD /* SocketIOClientOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketIOClientOption.swift; sourceTree = ""; };
DD52B09F7984E730513AB7E5 /* SocketAckManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketAckManager.swift; sourceTree = ""; };
DD52B1D9BC4AE46D38D827DE /* SocketIOStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SocketIOStatus.swift; sourceTree = ""; };
@@ -120,8 +117,8 @@
buildActionMask = 2147483647;
files = (
74DA21741F09440F009C19EE /* libz.tbd in Frameworks */,
+ 579C7D4C2731B487009F8A2F /* Starscream.xcframework in Frameworks */,
6CA08A981D615C0B0061FD2A /* Security.framework in Frameworks */,
- 74D0F5961F8053950037C4DC /* Starscream.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -231,11 +228,8 @@
isa = PBXGroup;
children = (
749FA1A11F811408002FBB30 /* Foundation.framework */,
- 749FA19F1F8112E7002FBB30 /* Starscream.framework.dSYM */,
+ 579C7D4B2731B487009F8A2F /* Starscream.xcframework */,
74D0F58D1F804FED0037C4DC /* libz.tbd */,
- 9432E0091F77F87D006AF628 /* Starscream.framework */,
- 9432E00B1F77F883006AF628 /* Starscream.framework */,
- 9432E00D1F77F889006AF628 /* Starscream.framework */,
74DA217D1F0945E9009C19EE /* libcommonCrypto.tbd */,
74DA21731F09440F009C19EE /* libz.tbd */,
6CA08A9E1D615C340061FD2A /* tvOS */,
@@ -350,9 +344,9 @@
isa = PBXNativeTarget;
buildConfigurationList = 572EF24B1B51F18A00EEBB58 /* Build configuration list for PBXNativeTarget "SocketIO" */;
buildPhases = (
+ 572EF2351B51F18A00EEBB58 /* Headers */,
572EF2331B51F18A00EEBB58 /* Sources */,
572EF2341B51F18A00EEBB58 /* Frameworks */,
- 572EF2351B51F18A00EEBB58 /* Headers */,
572EF2361B51F18A00EEBB58 /* Resources */,
);
buildRules = (
@@ -517,7 +511,6 @@
572EF2121B51F12F00EEBB58 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
- BITCODE_GENERATION_MODE = bitcode;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
@@ -537,37 +530,11 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "Mac Developer";
- ENABLE_BITCODE = YES;
- "ENABLE_BITCODE[sdk=macosx*]" = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
- "FRAMEWORK_SEARCH_PATHS[sdk=appletvos*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/tvOS",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=appletvsimulator*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/tvOS",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/Mac",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=watchos*]" = (
- "$(PROJECT_DIR)/Carthage/Build/watchOS",
- "$(inherited)",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=watchsimulator*]" = (
- "$(PROJECT_DIR)/Carthage/Build/watchOS",
+ FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
+ "$(PROJECT_DIR)/Carthage/Build/",
);
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
@@ -577,14 +544,14 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MACOSX_DEPLOYMENT_TARGET = 10.14;
ONLY_ACTIVE_ARCH = YES;
PRODUCT_NAME = SocketIO;
- SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphonesimulator iphoneos watchos watchsimulator";
+ SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphonesimulator iphoneos watchos watchsimulator xrsimulator xros";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
- TVOS_DEPLOYMENT_TARGET = 10.0;
+ TVOS_DEPLOYMENT_TARGET = 12.0;
VALID_ARCHS = "i386 x86_64 armv7 armv7s arm64 armv7k";
WATCHOS_DEPLOYMENT_TARGET = 7.0;
};
@@ -593,7 +560,6 @@
572EF2131B51F12F00EEBB58 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
- BITCODE_GENERATION_MODE = bitcode;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
@@ -613,36 +579,10 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "Mac Developer";
- ENABLE_BITCODE = YES;
- "ENABLE_BITCODE[sdk=macosx*]" = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
- "FRAMEWORK_SEARCH_PATHS[sdk=appletvos*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/tvOS",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=appletvsimulator*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/tvOS",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=iphoneos*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/iOS",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = (
- "$(inherited)",
- "$(PROJECT_DIR)/Carthage/Build/Mac",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=watchos*]" = (
- "$(PROJECT_DIR)/Carthage/Build/watchOS",
- "$(inherited)",
- );
- "FRAMEWORK_SEARCH_PATHS[sdk=watchsimulator*]" = (
- "$(PROJECT_DIR)/Carthage/Build/watchOS",
+ FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
+ "$(PROJECT_DIR)/Carthage/Build/",
);
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -651,13 +591,14 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 10.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MACOSX_DEPLOYMENT_TARGET = 10.14;
PRODUCT_NAME = SocketIO;
- SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphonesimulator iphoneos watchos watchsimulator";
- SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ SUPPORTED_PLATFORMS = "macosx appletvsimulator appletvos iphonesimulator iphoneos watchos watchsimulator xrsimulator xros";
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
- TVOS_DEPLOYMENT_TARGET = 10.0;
+ TVOS_DEPLOYMENT_TARGET = 12.0;
VALID_ARCHS = "i386 x86_64 armv7 armv7s arm64 armv7k";
WATCHOS_DEPLOYMENT_TARGET = 7.0;
};
@@ -666,6 +607,7 @@
572EF24C1B51F18A00EEBB58 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
@@ -690,8 +632,6 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- ENABLE_BITCODE = YES;
- "ENABLE_BITCODE[sdk=macosx*]" = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
@@ -712,8 +652,16 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = SocketIO/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ "@loader_path/../Frameworks",
+ );
LIBRARY_SEARCH_PATHS = "$(inherited)";
MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -722,11 +670,14 @@
SDKROOT = macosx;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "$(inherited)";
+ SUPPORTS_MACCATALYST = YES;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_INCLUDE_PATHS = "";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2,3,4";
+ TARGETED_DEVICE_FAMILY = "1,2,3,4,7";
TVOS_DEPLOYMENT_TARGET = 10.0;
VALID_ARCHS = "$(inherited)";
VERSIONING_SYSTEM = "apple-generic";
@@ -737,6 +688,7 @@
572EF24D1B51F18A00EEBB58 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES;
ALWAYS_SEARCH_USER_PATHS = NO;
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
@@ -761,8 +713,6 @@
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
- ENABLE_BITCODE = YES;
- "ENABLE_BITCODE[sdk=macosx*]" = NO;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@@ -778,8 +728,16 @@
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = SocketIO/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = (
+ "$(inherited)",
+ "@executable_path/../Frameworks",
+ "@loader_path/../Frameworks",
+ );
LIBRARY_SEARCH_PATHS = "$(inherited)";
MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = NO;
@@ -787,10 +745,13 @@
SDKROOT = macosx;
SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "$(inherited)";
+ SUPPORTS_MACCATALYST = YES;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
SWIFT_INCLUDE_PATHS = "";
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
SWIFT_VERSION = 5.0;
- TARGETED_DEVICE_FAMILY = "1,2,3,4";
+ TARGETED_DEVICE_FAMILY = "1,2,3,4,7";
TVOS_DEPLOYMENT_TARGET = 10.0;
VALID_ARCHS = "$(inherited)";
VERSIONING_SYSTEM = "apple-generic";
@@ -819,7 +780,6 @@
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
- ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(DEVELOPER_FRAMEWORKS_DIR)",
@@ -862,8 +822,15 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = SocketIO/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks @loader_path/../Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = (
+ "@executable_path/../Frameworks",
+ "@loader_path/../Frameworks",
+ );
LIBRARY_SEARCH_PATHS = "$(inherited)";
MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = YES;
@@ -901,7 +868,6 @@
COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
- ENABLE_BITCODE = NO;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
@@ -938,8 +904,15 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_FILE = SocketIO/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
- "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks @loader_path/../Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = (
+ "@executable_path/../Frameworks",
+ "@loader_path/../Frameworks",
+ );
LIBRARY_SEARCH_PATHS = "$(inherited)";
MACOSX_DEPLOYMENT_TARGET = 10.10;
MTL_ENABLE_DEBUG_INFO = NO;
diff --git a/Source/SocketIO/Ack/SocketAckEmitter.swift b/Source/SocketIO/Ack/SocketAckEmitter.swift
index 0a4eea77..0306f298 100644
--- a/Source/SocketIO/Ack/SocketAckEmitter.swift
+++ b/Source/SocketIO/Ack/SocketAckEmitter.swift
@@ -28,7 +28,7 @@ import Foundation
/// A class that represents a waiting ack call.
///
/// **NOTE**: You should not store this beyond the life of the event handler.
-public final class SocketAckEmitter : NSObject {
+public final class SocketAckEmitter: NSObject {
private unowned let socket: SocketIOClient
private let ackNum: Int
@@ -101,7 +101,7 @@ public final class SocketAckEmitter : NSObject {
/// ...
/// }
/// ```
-public final class OnAckCallback : NSObject {
+public final class OnAckCallback: NSObject {
private let ackNumber: Int
private let binary: Bool
private let items: [Any]
@@ -136,8 +136,8 @@ public final class OnAckCallback : NSObject {
guard seconds != 0 else { return }
- socket.manager?.handleQueue.asyncAfter(deadline: DispatchTime.now() + seconds) {[weak socket] in
- guard let socket = socket else { return }
+ socket.manager?.handleQueue.asyncAfter(deadline: DispatchTime.now() + seconds) {[weak socket, weak self] in
+ guard let socket = socket, let `self` = self else { return }
socket.ackHandlers.timeoutAck(self.ackNumber)
}
diff --git a/Source/SocketIO/Client/SocketIOClientOption.swift b/Source/SocketIO/Client/SocketIOClientOption.swift
index ac1a032b..545c210b 100644
--- a/Source/SocketIO/Client/SocketIOClientOption.swift
+++ b/Source/SocketIO/Client/SocketIOClientOption.swift
@@ -108,6 +108,9 @@ public enum SocketIOClientOption : ClientOption {
/// Sets an NSURLSessionDelegate for the underlying engine. Useful if you need to handle self-signed certs.
case sessionDelegate(URLSessionDelegate)
+ /// If passed `false`, the WebSocket stream will be configured with the useCustomEngine `false`.
+ case useCustomEngine(Bool)
+
/// The version of socket.io being used. This should match the server version. Default is 3.
case version(SocketIOVersion)
@@ -160,6 +163,8 @@ public enum SocketIOClientOption : ClientOption {
description = "sessionDelegate"
case .enableSOCKSProxy:
description = "enableSOCKSProxy"
+ case .useCustomEngine:
+ description = "customEngine"
case .version:
description = "version"
}
@@ -213,6 +218,8 @@ public enum SocketIOClientOption : ClientOption {
value = delegate
case let .enableSOCKSProxy(enable):
value = enable
+ case let .useCustomEngine(enable):
+ value = enable
case let.version(versionNum):
value = versionNum
}
diff --git a/Source/SocketIO/Engine/SocketEngine.swift b/Source/SocketIO/Engine/SocketEngine.swift
index 991385c7..f95b828f 100644
--- a/Source/SocketIO/Engine/SocketEngine.swift
+++ b/Source/SocketIO/Engine/SocketEngine.swift
@@ -28,8 +28,10 @@ import Starscream
/// The class that handles the engine.io protocol and transports.
/// See `SocketEnginePollable` and `SocketEngineWebsocket` for transport specific methods.
-open class SocketEngine:
- NSObject, WebSocketDelegate, URLSessionDelegate, SocketEnginePollable, SocketEngineWebsocket, ConfigSettable {
+open class SocketEngine: NSObject, WebSocketDelegate, URLSessionDelegate,
+ SocketEnginePollable, SocketEngineWebsocket, ConfigSettable {
+
+
// MARK: Properties
private static let logType = "SocketEngine"
@@ -111,6 +113,9 @@ open class SocketEngine:
/// The url for WebSockets.
public private(set) var urlWebSocket = URL(string: "http://localhost/")!
+ /// When `false`, the WebSocket `stream` will be configured with the useCustomEngine `false`.
+ public private(set) var useCustomEngine = true
+
/// The version of engine.io being used. Default is three.
public private(set) var version: SocketIOVersion = .three
@@ -307,7 +312,7 @@ open class SocketEngine:
includingCookies: session?.configuration.httpCookieStorage?.cookies(for: urlPollingWithSid)
)
- ws = WebSocket(request: req, certPinner: certPinner, compressionHandler: compress ? WSCompression() : nil)
+ ws = WebSocket(request: req, certPinner: certPinner, compressionHandler: compress ? WSCompression() : nil, useCustomEngine: useCustomEngine)
ws?.callbackQueue = engineQueue
ws?.delegate = self
@@ -624,6 +629,8 @@ open class SocketEngine:
self.compress = true
case .enableSOCKSProxy:
self.enableSOCKSProxy = true
+ case let .useCustomEngine(enable):
+ self.useCustomEngine = enable
case let .version(num):
version = num
default:
@@ -742,11 +749,11 @@ extension SocketEngine {
/// - Parameters:
/// - event: WS Event
/// - _:
- public func didReceive(event: WebSocketEvent, client _: WebSocket) {
+ public func didReceive(event: Starscream.WebSocketEvent, client: Starscream.WebSocketClient) {
switch event {
case let .connected(headers):
wsConnected = true
- client?.engineDidWebsocketUpgrade(headers: headers)
+ self.client?.engineDidWebsocketUpgrade(headers: headers)
websocketDidConnect()
case .cancelled:
wsConnected = false
diff --git a/Tests/TestSocketIO/SocketMangerTest.swift b/Tests/TestSocketIO/SocketMangerTest.swift
index f6473399..ced48fa3 100644
--- a/Tests/TestSocketIO/SocketMangerTest.swift
+++ b/Tests/TestSocketIO/SocketMangerTest.swift
@@ -59,7 +59,7 @@ class SocketMangerTest : XCTestCase {
}
- func testManagerDoesNotCallConnectWhenConnectingWithLessThanOneReconnect() {
+ func testManagerDoesNotCallConnectWhenConnectingWithLessThanOneReconnectOnDefault() {
setUpSockets()
let expect = expectation(description: "The manager should call not connect on the default socket")
@@ -79,7 +79,7 @@ class SocketMangerTest : XCTestCase {
waitForExpectations(timeout: 0.3)
}
- func testManagerCallConnectWhenConnectingAndMoreThanOneReconnect() {
+ func testManagerCallConnectWhenConnectingAndMoreThanOneReconnectOnDefault() {
setUpSockets()
let expect = expectation(description: "The manager should call connect on the default socket")
@@ -97,7 +97,7 @@ class SocketMangerTest : XCTestCase {
waitForExpectations(timeout: 0.8)
}
- func testManagerDoesNotCallConnectWhenConnectingWithLessThanOneReconnect() {
+ func testManagerDoesNotCallConnectWhenConnectingWithLessThanOneReconnectOnEngine() {
setUpSockets()
let expect = expectation(description: "The manager should not call connect on the engine")
@@ -117,7 +117,7 @@ class SocketMangerTest : XCTestCase {
waitForExpectations(timeout: 0.3)
}
- func testManagerCallConnectWhenConnectingAndMoreThanOneReconnect() {
+ func testManagerCallConnectWhenConnectingAndMoreThanOneReconnectOnEngine() {
setUpSockets()
let expect = expectation(description: "The manager should call connect on the engine")