static void Echo(Instance instance, bool writeLog) { if (instance.MessageConnection.ConnectState != ConnectionState.Connected) { return; } // 验证一次请求 // string text = Guid.NewGuid().ToString(); string text = "!verify"; if (writeLog) { instance.WriteErrorLog("Begin echo: " + text); } try { string result = instance.MessageConnection.EchoTaskAsync(text, TimeSpan.FromSeconds(5), instance._cancel.Token).Result; // 此用法在 dp2mserver 不存在 echo() API 的时候会挂起当前线程 // string result = instance.MessageConnection.echo(text).Result; if (result == null) { result = "(timeout)"; } if (writeLog) { instance.WriteErrorLog("End echo: " + result); } } catch (Exception ex) { instance.WriteErrorLog("echo 出现异常: " + ExceptionUtil.GetExceptionText(ex)); { string strErrorCode = ""; if (MessageConnection.IsHttpClientException(ex, out strErrorCode)) { // echo 的时候有小概率可能会返回用户认证异常?重置连接 Task.Run(() => instance.TryResetConnection()); } } } }