サーバーに再接続できるようにするTCP Client
必要があります。ネットワーク接続の品質が低いか、メンテナンスの問題が原因で、サーバーが利用できない場合があります。この分野で質の高いソリューションを探しています。
私の現在の解決策は次のとおりです。
- ConnectionState enum {Offline, Online, Connecting} で接続状態を維持する
TcpClient
クラスでクライアントを作成します。- と呼ばれる 2 つのタイマーを作成し
ConnectionCheckTimer
、ReconnectTimer
- サーバーに接続する
- リーダー スレッドと接続チェック タイマーを開始する
- 読み取りは tcpClient.GetStream() で実行され、次にこのストリームから読み取ります
- ReaderLoop クライアントの状態がオフラインに変更され、ReconnectTimer が起動されたときに例外がキャッチされた場合
ConnectionCheckTimer
lastMessageTimestamp を定期的にチェックし、間隔が maxValue より大きい場合は現在の時刻と比較します。ReconnectTimer
現在、このソリューションには満足していません。これは、TcpClient.NetworkStream でインスタンス ObjectDisposedException の例外が引き続き生成されるためです。接続、切断、データの読み取り中に発生する可能性のあるすべてのソケットの問題に対処できる、クリーンで再利用可能な Tcp 再接続クライアントの実装を探しています。