Skip to content

Commit d454e4d

Browse files
author
015484
committed
swift demo bugfix
1 parent 04843f2 commit d454e4d

1 file changed

Lines changed: 27 additions & 3 deletions

File tree

Examples/iOSDemo/iOSDemo/SocketManager.swift

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ final class SocketManager: NSObject, ObservableObject {
3333

3434
private var socket: NWAsyncSocket?
3535
private var readTag: Int = 0
36+
private var pendingManualDisconnect = false
37+
38+
private static func jyHeadData2013() -> Data {
39+
var value: Int64 = 2013
40+
let fullData = withUnsafeBytes(of: &value) { Data($0) }
41+
return Data(fullData.prefix(6))
42+
}
3643

3744
// MARK: - Connection
3845

@@ -65,8 +72,14 @@ final class SocketManager: NSObject, ObservableObject {
6572

6673
/// Disconnect the current socket.
6774
func disconnect() {
68-
socket?.disconnect()
69-
socket = nil
75+
guard let socket = socket else {
76+
return
77+
}
78+
pendingManualDisconnect = true
79+
isConnected = false
80+
appendLog("⏹ Disconnect requested by client")
81+
socket.disconnect()
82+
self.socket = nil
7083
}
7184

7285
/// Send a string as UTF-8 data.
@@ -123,7 +136,15 @@ extension SocketManager: NWAsyncSocketDelegate {
123136

124137
func socket(_ sock: NWAsyncSocket, didConnectToHost host: String, port: UInt16) {
125138
isConnected = true
139+
pendingManualDisconnect = false
126140
appendLog("✅ Connected to \(host):\(port)")
141+
142+
let handshake = Self.jyHeadData2013()
143+
let handshakeTag = readTag
144+
readTag += 1
145+
sock.write(handshake, withTimeout: 30, tag: handshakeTag)
146+
appendLog("🤝 Sent handshake (\(handshake.count) bytes, tag: \(handshakeTag))")
147+
127148
// Start reading
128149
sock.readData(withTimeout: -1, tag: readTag)
129150
readTag += 1
@@ -145,9 +166,12 @@ extension SocketManager: NWAsyncSocketDelegate {
145166
isConnected = false
146167
if let error = error {
147168
appendLog("🔴 Disconnected: \(error.localizedDescription)")
169+
} else if pendingManualDisconnect {
170+
appendLog("🟠 Disconnected (client requested)")
148171
} else {
149-
appendLog("🔴 Disconnected")
172+
appendLog("🟡 Disconnected (peer closed connection)")
150173
}
174+
pendingManualDisconnect = false
151175
}
152176

153177
func socket(_ sock: NWAsyncSocket, didReceiveSSEEvent event: SSEEvent) {

0 commit comments

Comments
 (0)