public static async Task Start() { try { log.LogInformation("Инициализация"); wsTunnelConfig = ConfigWatcher.GetSection("wstunnel").ConvertValue <WSTunnelConfig>(); client = new WsClient(); await client.OpenManagerTunnel(wsTunnelConfig, DisconnectTunnel, DisconnectSocket); await client.Auth(); var tunnelGuid = await client.OpenDataTunnel(DataReceiver, DisconnecDataTunnel); dataConnections.TryAdd(tunnelGuid, new WSDataConnectionInfo { TunnelId = tunnelGuid }); var testObj = new EchoReq { ReqId = Guid.NewGuid(), Timestamp = DateTime.UtcNow }; var buffer = Encoding.UTF8.GetBytes(testObj.ToJson()); await client.SendData(tunnelGuid, Guid.Empty, buffer, buffer.Length); log.LogInformation($"Послали echo - {testObj.ReqId}"); server = new Socks5Server(); server.Start(wsTunnelConfig.Port, RequireNewConnection, TransferData, CloseSocket); } catch (Exception e) { log.LogError($"Ошибка инициализации: {e.Message}"); server?.Dispose(); client?.Dispose(); } }