Skip to content

Commit d690d9c

Browse files
authored
Merge pull request #1464 from socketio/development
v16.1.1
2 parents 175da8b + 99cc244 commit d690d9c

File tree

13 files changed

+77
-18
lines changed

13 files changed

+77
-18
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,5 @@ Socket.IO-Test-Server/node_modules/*
5050
.idea/
5151
docs/docsets/
5252
docs/undocumented.json
53+
54+
.swiftpm

.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.resolved

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
"repositoryURL": "https://github.com/daltoniam/Starscream",
77
"state": {
88
"branch": null,
9-
"revision": "ac6c0fc9da221873e01bd1a0d4818498a71eef33",
10-
"version": "4.0.6"
9+
"revision": "c6bfd1af48efcc9a9ad203665db12375ba6b145a",
10+
"version": "4.0.8"
1111
}
1212
}
1313
]

Package.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ let package = Package(
88
.library(name: "SocketIO", targets: ["SocketIO"])
99
],
1010
dependencies: [
11-
.package(url: "https://github.com/daltoniam/Starscream", .exactItem("4.0.6")),
11+
.package(url: "https://github.com/daltoniam/Starscream", .upToNextMajor(from: "4.0.8")),
1212
],
1313
targets: [
1414
.target(name: "SocketIO", dependencies: ["Starscream"]),

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ socket.on("currentAmount") {data, ack in
1818
guard let cur = data[0] as? Double else { return }
1919

2020
socket.emitWithAck("canUpdate", cur).timingOut(after: 0) {data in
21-
if data.first as? String ?? "passed" == SocketAckValue.noAck {
21+
if data.first as? String ?? "passed" == SocketAckStatus.noAck {
2222
// Handle ack timeout
2323
}
2424

Socket.IO-Client-Swift.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Pod::Spec.new do |s|
1111
s.homepage = "https://github.com/socketio/socket.io-client-swift"
1212
s.license = { :type => 'MIT' }
1313
s.author = { "Erik" => "[email protected]" }
14-
s.ios.deployment_target = '11.0'
14+
s.ios.deployment_target = '12.0'
1515
s.osx.deployment_target = '10.13'
1616
s.tvos.deployment_target = '12.0'
1717
s.watchos.deployment_target = '5.0'

Socket.IO-Client-Swift.xcodeproj/project.pbxproj

+8-6
Original file line numberDiff line numberDiff line change
@@ -652,6 +652,7 @@
652652
GCC_WARN_UNUSED_VARIABLE = YES;
653653
INFOPLIST_FILE = SocketIO/Info.plist;
654654
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
655+
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
655656
LD_RUNPATH_SEARCH_PATHS = (
656657
"$(inherited)",
657658
"@executable_path/Frameworks",
@@ -678,7 +679,7 @@
678679
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
679680
SWIFT_VERSION = 5.0;
680681
TARGETED_DEVICE_FAMILY = "1,2,3,4,7";
681-
TVOS_DEPLOYMENT_TARGET = 10.0;
682+
TVOS_DEPLOYMENT_TARGET = 12.0;
682683
VALID_ARCHS = "$(inherited)";
683684
VERSIONING_SYSTEM = "apple-generic";
684685
VERSION_INFO_PREFIX = "";
@@ -728,6 +729,7 @@
728729
GCC_WARN_UNUSED_VARIABLE = YES;
729730
INFOPLIST_FILE = SocketIO/Info.plist;
730731
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
732+
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
731733
LD_RUNPATH_SEARCH_PATHS = (
732734
"$(inherited)",
733735
"@executable_path/Frameworks",
@@ -752,7 +754,7 @@
752754
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
753755
SWIFT_VERSION = 5.0;
754756
TARGETED_DEVICE_FAMILY = "1,2,3,4,7";
755-
TVOS_DEPLOYMENT_TARGET = 10.0;
757+
TVOS_DEPLOYMENT_TARGET = 12.0;
756758
VALID_ARCHS = "$(inherited)";
757759
VERSIONING_SYSTEM = "apple-generic";
758760
VERSION_INFO_PREFIX = "";
@@ -832,7 +834,7 @@
832834
"@loader_path/../Frameworks",
833835
);
834836
LIBRARY_SEARCH_PATHS = "$(inherited)";
835-
MACOSX_DEPLOYMENT_TARGET = 10.10;
837+
MACOSX_DEPLOYMENT_TARGET = 10.13;
836838
MTL_ENABLE_DEBUG_INFO = YES;
837839
ONLY_ACTIVE_ARCH = YES;
838840
PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)";
@@ -842,7 +844,7 @@
842844
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
843845
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
844846
SWIFT_VERSION = 5.0;
845-
TVOS_DEPLOYMENT_TARGET = 10.0;
847+
TVOS_DEPLOYMENT_TARGET = 12.0;
846848
VALID_ARCHS = "$(inherited)";
847849
};
848850
name = Debug;
@@ -914,15 +916,15 @@
914916
"@loader_path/../Frameworks",
915917
);
916918
LIBRARY_SEARCH_PATHS = "$(inherited)";
917-
MACOSX_DEPLOYMENT_TARGET = 10.10;
919+
MACOSX_DEPLOYMENT_TARGET = 10.13;
918920
MTL_ENABLE_DEBUG_INFO = NO;
919921
PRODUCT_BUNDLE_IDENTIFIER = "io.socket.$(PRODUCT_NAME:rfc1034identifier)";
920922
PRODUCT_NAME = "$(TARGET_NAME)";
921923
SDKROOT = macosx;
922924
SUPPORTED_PLATFORMS = "$(inherited)";
923925
SWIFT_SWIFT3_OBJC_INFERENCE = Default;
924926
SWIFT_VERSION = 5.0;
925-
TVOS_DEPLOYMENT_TARGET = 10.0;
927+
TVOS_DEPLOYMENT_TARGET = 12.0;
926928
VALID_ARCHS = "$(inherited)";
927929
};
928930
name = Release;

Source/SocketIO/Ack/SocketAckEmitter.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,8 @@ public final class OnAckCallback: NSObject {
136136

137137
guard seconds != 0 else { return }
138138

139-
socket.manager?.handleQueue.asyncAfter(deadline: DispatchTime.now() + seconds) {[weak socket, weak self] in
140-
guard let socket = socket, let `self` = self else { return }
139+
socket.manager?.handleQueue.asyncAfter(deadline: DispatchTime.now() + seconds) {[weak socket] in
140+
guard let socket = socket else { return }
141141

142142
socket.ackHandlers.timeoutAck(self.ackNumber)
143143
}

Source/SocketIO/Client/SocketIOClient.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ open class SocketIOClient: NSObject, SocketIOClientSpec {
150150

151151
manager.handleQueue.asyncAfter(deadline: DispatchTime.now() + timeoutAfter) {[weak self] in
152152
guard let this = self, this.status == .connecting || this.status == .notConnected else { return }
153-
153+
DefaultSocketLogger.Logger.log("Timeout: Socket not connected, so setting to disconnected", type: this.logType)
154+
154155
this.status = .disconnected
155156
this.leaveNamespace()
156157

Source/SocketIO/Engine/SocketEngine.swift

+6
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,12 @@ extension SocketEngine {
761761
case .disconnected(_, _):
762762
wsConnected = false
763763
websocketDidDisconnect(error: nil)
764+
case .viabilityChanged(false):
765+
wsConnected = false
766+
websocketDidDisconnect(error: nil)
767+
case .peerClosed:
768+
wsConnected = false
769+
websocketDidDisconnect(error: nil)
764770
case let .text(msg):
765771
parseEngineMessage(msg)
766772
case let .binary(data):

Source/SocketIO/Manager/SocketManager.swift

+2-3
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ open class SocketManager: NSObject, SocketManagerSpec, SocketParsable, SocketDat
132132
private(set) var reconnectAttempts = -1
133133

134134
private var _config: SocketIOClientConfiguration
135-
private var currentReconnectAttempt = 0
135+
internal var currentReconnectAttempt = 0
136136
private var reconnecting = false
137137

138138
// MARK: Initializers
@@ -186,9 +186,8 @@ open class SocketManager: NSObject, SocketManagerSpec, SocketParsable, SocketDat
186186
///
187187
/// Override if you wish to attach a custom `SocketEngineSpec`.
188188
open func connect() {
189-
guard !status.active else {
189+
if status == .connected || (status == .connecting && currentReconnectAttempt == 0) {
190190
DefaultSocketLogger.Logger.log("Tried connecting an already active socket", type: SocketManager.logType)
191-
192191
return
193192
}
194193

Tests/TestSocketIO/SocketMangerTest.swift

+42
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,44 @@ class SocketMangerTest : XCTestCase {
6060
waitForExpectations(timeout: 0.3)
6161
}
6262

63+
func testManagerDoesNotCallConnectWhenConnectingWithLessThanOneReconnect() {
64+
setUpSockets()
65+
66+
let expect = expectation(description: "The manager should not call connect on the engine")
67+
expect.isInverted = true
68+
69+
let engine = TestEngine(client: manager, url: manager.socketURL, options: nil)
70+
71+
engine.onConnect = {
72+
expect.fulfill()
73+
}
74+
manager.setTestStatus(.connecting)
75+
manager.setCurrentReconnect(currentReconnect: 0)
76+
manager.engine = engine
77+
78+
manager.connect()
79+
80+
waitForExpectations(timeout: 0.3)
81+
}
82+
83+
func testManagerCallConnectWhenConnectingAndMoreThanOneReconnect() {
84+
setUpSockets()
85+
86+
let expect = expectation(description: "The manager should call connect on the engine")
87+
let engine = TestEngine(client: manager, url: manager.socketURL, options: nil)
88+
89+
engine.onConnect = {
90+
expect.fulfill()
91+
}
92+
manager.setTestStatus(.connecting)
93+
manager.setCurrentReconnect(currentReconnect: 1)
94+
manager.engine = engine
95+
96+
manager.connect()
97+
98+
waitForExpectations(timeout: 0.8)
99+
}
100+
63101
func testManagerCallsDisconnect() {
64102
setUpSockets()
65103

@@ -154,6 +192,10 @@ public enum ManagerExpectation: String {
154192
}
155193

156194
public class TestManager: SocketManager {
195+
public func setCurrentReconnect(currentReconnect: Int) {
196+
self.currentReconnectAttempt = currentReconnect
197+
}
198+
157199
public override func disconnect() {
158200
setTestStatus(.disconnected)
159201
}

Tests/TestSocketIO/SocketSideEffectTest.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ class TestEngine: SocketEngineSpec {
487487
private(set) var ws: WebSocket? = nil
488488
private(set) var version = SocketIOVersion.three
489489

490-
fileprivate var onConnect: (() -> ())?
490+
internal var onConnect: (() -> ())?
491491

492492
required init(client: SocketEngineClient, url: URL, options: [String: Any]?) {
493493
self.client = client

0 commit comments

Comments
 (0)