@@ -87,15 +87,16 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
87
87
}
88
88
89
89
public nonisolated func close( with closeCode: URLSessionWebSocketTask . CloseCode , reason: Data ? ) {
90
+ logger. trace ( " \( #function) called " )
90
91
// If the task is already closed, we need to call onClose, as that is
91
92
// the only way the events channel is finished.
92
93
guard self . wsTask. closeCode == . invalid else {
93
- Task { await self . onClose ( closeCode: closeCode, reason: reason) }
94
+ Task { await self . onClose ( closeCode: closeCode, reason: reason, caller : " \( #function ) [1] " ) }
94
95
return
95
96
}
96
97
self . wsTask. cancel ( with: closeCode, reason: reason) // sends close frame
97
98
// although if the socket never opened, we still need to close the events… 🤦♂️
98
- Task { await self . onClose ( closeCode: closeCode, reason: reason) }
99
+ Task { await self . onClose ( closeCode: closeCode, reason: reason, caller : " \( #function ) [2] " ) }
99
100
}
100
101
101
102
public nonisolated func connect( ) -> AsyncChannel < WebSocketEvent > {
@@ -126,9 +127,10 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
126
127
await self . readNextMessage ( 1 )
127
128
}
128
129
129
- private func onClose( closeCode: URLSessionWebSocketTask . CloseCode , reason: Data ? ) async {
130
+ private func onClose( closeCode: URLSessionWebSocketTask . CloseCode , reason: Data ? , caller: String = #function) async {
131
+ logger. trace ( " \( #function) called from \( caller) " )
130
132
guard !self . isAlreadyClosed else {
131
- logger. warning ( " ⚠️ self.isAlreadyClosed in \( #function) " )
133
+ logger. trace ( " self.isAlreadyClosed in \( #function) called from \( caller ) " )
132
134
// Due to delegate callbacks, we can get here more than once. Don't send multiple
133
135
// disconnect events or log multiple closures.
134
136
return
@@ -142,7 +144,8 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
142
144
self . isAlreadyClosed = true
143
145
}
144
146
145
- private func didCompleteWithError( _ error: ( any Error ) ? ) async {
147
+ private func didCompleteWithError( _ error: ( any Error ) ? , caller: String = #function) async {
148
+ logger. trace ( " \( #function) with isAlreadyClosed: \( self . isAlreadyClosed) , error: \( String ( describing: error) ) called from \( caller) " )
146
149
guard let error, !self . isAlreadyClosed else { return }
147
150
148
151
let nsError = error as NSError
@@ -169,8 +172,6 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
169
172
do {
170
173
let message = try await self . wsTask. receive ( )
171
174
let meta = MessageMetadata ( number: number)
172
-
173
- self . logger. trace ( " WebSocketClient did receive message with number \( number) \( message. loggingDescription) " )
174
175
await self . events. send ( . message( message, metadata: meta) )
175
176
Task { await self . readNextMessage ( number + 1 ) }
176
177
} catch {
0 commit comments