mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-10-31 02:17:45 +00:00 
			
		
		
		
	Fixed websocket not reconnecting on .NetFramework when connection unexpectedly gets closed
This commit is contained in:
		
							parent
							
								
									41b58ed284
								
							
						
					
					
						commit
						1b4ca864ed
					
				| @ -3962,5 +3962,148 @@ | |||||||
|         <member name="M:CryptoExchange.Net.Sockets.WebsocketFactory.CreateWebsocket(CryptoExchange.Net.Logging.Log,System.String,System.Collections.Generic.IDictionary{System.String,System.String},System.Collections.Generic.IDictionary{System.String,System.String})"> |         <member name="M:CryptoExchange.Net.Sockets.WebsocketFactory.CreateWebsocket(CryptoExchange.Net.Logging.Log,System.String,System.Collections.Generic.IDictionary{System.String,System.String},System.Collections.Generic.IDictionary{System.String,System.String})"> | ||||||
|             <inheritdoc /> |             <inheritdoc /> | ||||||
|         </member> |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that <see langword="null"/> is allowed as an input even if the | ||||||
|  |                 corresponding type disallows it. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.AllowNullAttribute.#ctor"> | ||||||
|  |             <summary> | ||||||
|  |                 Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.AllowNullAttribute"/> class. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that <see langword="null"/> is disallowed as an input even if the | ||||||
|  |                 corresponding type allows it. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.DisallowNullAttribute.#ctor"> | ||||||
|  |             <summary> | ||||||
|  |                 Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.DisallowNullAttribute"/> class. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that a method that will never return under any circumstance. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute.#ctor"> | ||||||
|  |             <summary> | ||||||
|  |                 Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.DoesNotReturnAttribute"/> class. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that the method will not return if the associated <see cref="T:System.Boolean"/> | ||||||
|  |                 parameter is passed the specified value. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="P:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.ParameterValue"> | ||||||
|  |             <summary> | ||||||
|  |                 Gets the condition parameter value. | ||||||
|  |                 Code after the method is considered unreachable by diagnostics if the argument | ||||||
|  |                 to the associated parameter matches this value. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute.#ctor(System.Boolean)"> | ||||||
|  |             <summary> | ||||||
|  |                 Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute"/> | ||||||
|  |                 class with the specified parameter value. | ||||||
|  |             </summary> | ||||||
|  |             <param name="parameterValue"> | ||||||
|  |                 The condition parameter value. | ||||||
|  |                 Code after the method is considered unreachable by diagnostics if the argument | ||||||
|  |                 to the associated parameter matches this value. | ||||||
|  |             </param> | ||||||
|  |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that an output may be <see langword="null"/> even if the | ||||||
|  |                 corresponding type disallows it. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.MaybeNullAttribute.#ctor"> | ||||||
|  |             <summary> | ||||||
|  |                 Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.MaybeNullAttribute"/> class. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"/>,  | ||||||
|  |                 the parameter may be <see langword="null"/> even if the corresponding type disallows it. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="P:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.ReturnValue"> | ||||||
|  |             <summary> | ||||||
|  |                 Gets the return value condition. | ||||||
|  |                 If the method returns this value, the associated parameter may be <see langword="null"/>. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.MaybeNullWhenAttribute.#ctor(System.Boolean)"> | ||||||
|  |             <summary> | ||||||
|  |                  Initializes the attribute with the specified return value condition. | ||||||
|  |             </summary> | ||||||
|  |             <param name="returnValue"> | ||||||
|  |                 The return value condition. | ||||||
|  |                 If the method returns this value, the associated parameter may be <see langword="null"/>. | ||||||
|  |             </param> | ||||||
|  |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.NotNullAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that an output is not <see langword="null"/> even if the | ||||||
|  |                 corresponding type allows it. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.NotNullAttribute.#ctor"> | ||||||
|  |             <summary> | ||||||
|  |                 Initializes a new instance of the <see cref="T:System.Diagnostics.CodeAnalysis.NotNullAttribute"/> class. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that the output will be non-<see langword="null"/> if the | ||||||
|  |                 named parameter is non-<see langword="null"/>. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="P:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.ParameterName"> | ||||||
|  |             <summary> | ||||||
|  |                 Gets the associated parameter name. | ||||||
|  |                 The output will be non-<see langword="null"/> if the argument to the | ||||||
|  |                 parameter specified is non-<see langword="null"/>. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.NotNullIfNotNullAttribute.#ctor(System.String)"> | ||||||
|  |             <summary> | ||||||
|  |                 Initializes the attribute with the associated parameter name. | ||||||
|  |             </summary> | ||||||
|  |             <param name="parameterName"> | ||||||
|  |                 The associated parameter name. | ||||||
|  |                 The output will be non-<see langword="null"/> if the argument to the | ||||||
|  |                 parameter specified is non-<see langword="null"/>. | ||||||
|  |             </param> | ||||||
|  |         </member> | ||||||
|  |         <member name="T:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute"> | ||||||
|  |             <summary> | ||||||
|  |                 Specifies that when a method returns <see cref="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"/>, | ||||||
|  |                 the parameter will not be <see langword="null"/> even if the corresponding type allows it. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="P:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.ReturnValue"> | ||||||
|  |             <summary> | ||||||
|  |                 Gets the return value condition. | ||||||
|  |                 If the method returns this value, the associated parameter will not be <see langword="null"/>. | ||||||
|  |             </summary> | ||||||
|  |         </member> | ||||||
|  |         <member name="M:System.Diagnostics.CodeAnalysis.NotNullWhenAttribute.#ctor(System.Boolean)"> | ||||||
|  |             <summary> | ||||||
|  |                 Initializes the attribute with the specified return value condition. | ||||||
|  |             </summary> | ||||||
|  |             <param name="returnValue"> | ||||||
|  |                 The return value condition. | ||||||
|  |                 If the method returns this value, the associated parameter will not be <see langword="null"/>. | ||||||
|  |             </param> | ||||||
|  |         </member> | ||||||
|     </members> |     </members> | ||||||
| </doc> | </doc> | ||||||
|  | |||||||
| @ -384,6 +384,13 @@ namespace CryptoExchange.Net.Sockets | |||||||
|                         // cancelled |                         // cancelled | ||||||
|                         break; |                         break; | ||||||
|                     } |                     } | ||||||
|  |                     catch (IOException ioe) | ||||||
|  |                     { | ||||||
|  |                         // Connection closed unexpectedly, .NET framework                       | ||||||
|  |                         Handle(errorHandlers, ioe); | ||||||
|  |                         await CloseInternalAsync(false, true).ConfigureAwait(false); | ||||||
|  |                         break; | ||||||
|  |                     } | ||||||
|                     catch (WebSocketException wse) |                     catch (WebSocketException wse) | ||||||
|                     { |                     { | ||||||
|                         // Connection closed unexpectedly                         |                         // Connection closed unexpectedly                         | ||||||
| @ -432,6 +439,13 @@ namespace CryptoExchange.Net.Sockets | |||||||
|                         await CloseInternalAsync(true, false).ConfigureAwait(false); |                         await CloseInternalAsync(true, false).ConfigureAwait(false); | ||||||
|                         break; |                         break; | ||||||
|                     } |                     } | ||||||
|  |                     catch (IOException ioe) | ||||||
|  |                     { | ||||||
|  |                         // Connection closed unexpectedly, .NET framework | ||||||
|  |                         Handle(errorHandlers, ioe); | ||||||
|  |                         await CloseInternalAsync(true, false).ConfigureAwait(false); | ||||||
|  |                         break; | ||||||
|  |                     } | ||||||
| 
 | 
 | ||||||
|                     if (receiveResult.MessageType == WebSocketMessageType.Close) |                     if (receiveResult.MessageType == WebSocketMessageType.Close) | ||||||
|                     { |                     { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user