@@ -87,15 +87,16 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
8787 }
8888
8989 public nonisolated func close( with closeCode: URLSessionWebSocketTask . CloseCode , reason: Data ? ) {
90+ logger. trace ( " \( #function) called " )
9091 // If the task is already closed, we need to call onClose, as that is
9192 // the only way the events channel is finished.
9293 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] " ) }
9495 return
9596 }
9697 self . wsTask. cancel ( with: closeCode, reason: reason) // sends close frame
9798 // 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] " ) }
99100 }
100101
101102 public nonisolated func connect( ) -> AsyncChannel < WebSocketEvent > {
@@ -126,9 +127,10 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
126127 await self . readNextMessage ( 1 )
127128 }
128129
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) " )
130132 guard !self . isAlreadyClosed else {
131- logger. warning ( " ⚠️ self.isAlreadyClosed in \( #function) " )
133+ logger. trace ( " self.isAlreadyClosed in \( #function) called from \( caller ) " )
132134 // Due to delegate callbacks, we can get here more than once. Don't send multiple
133135 // disconnect events or log multiple closures.
134136 return
@@ -142,7 +144,8 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
142144 self . isAlreadyClosed = true
143145 }
144146
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) " )
146149 guard let error, !self . isAlreadyClosed else { return }
147150
148151 let nsError = error as NSError
@@ -169,8 +172,6 @@ public actor URLSessionWebSocketTransport: MessageTransport, SimpleURLSessionTas
169172 do {
170173 let message = try await self . wsTask. receive ( )
171174 let meta = MessageMetadata ( number: number)
172-
173- self . logger. trace ( " WebSocketClient did receive message with number \( number) \( message. loggingDescription) " )
174175 await self . events. send ( . message( message, metadata: meta) )
175176 Task { await self . readNextMessage ( number + 1 ) }
176177 } catch {
0 commit comments