static void Main(string[] _) { try { // Choose a WebSocket Implementation Console.WriteLine("\nChoose a WebSocket Implementation:"); Console.WriteLine("\t1 - ClientWebSocket (Microsoft implementation)"); Console.WriteLine("\t2 - WebSocket4Net (originated from SuperWebSocket)"); Console.WriteLine("\t3 - WebSocketSharp"); Console.Write("\t==> "); string input = Console.ReadLine(); int ver; if (int.TryParse(input, out ver)) { switch (ver) { case 1: // The default in the library break; case 2: // How to specify a version available within the library DeliveryFactory.RegisterWebSocket(DeliveryFactory.WebSocketImpl.WebSocket4Net); break; case 3: // Override with your own custom implementation DeliveryFactory.RegisterWebSocketImpl = () => new WebSocketSharpImpl(); break; default: return; } using (ISession session = Configuration.Sessions.GetSession(false)) { if (session.Open() == Session.State.Opened) { TestStreaming(); } } } } catch (Exception e) { Console.WriteLine($"\n**************\nFailed to execute: {e.Message}\n{e.InnerException}\n***************"); } }
// ** CHANGES BELOW ARE NOT REQUIRED UNLESS YOUR ACCESS REQUIRES ADDITIONAL PARAMETERS ** // GetSession // Based on the above Session Type, retrieve the Session used to define how you want to access the platform. // public static ISession GetSession(bool overrideWebSocketIfNecessary = true) { if (overrideWebSocketIfNecessary) { // Note: // The default RDP Library for .NET WebSocket implementation is based on Microsoft's WebSocketClient. This implementation // is only available on Windows 8 and above or if an application targets .NET Core 2.1 or greater. Because all example // applications within this package are built using .NET Framework 4.5.2, if the Windows OS is anything less than Windows 8, // the WebSocket4Net implementation will be used. var ver = Environment.OSVersion.Version; if (ver.Major <= 6 && ver.Minor <= 1) { DeliveryFactory.RegisterWebSocket(DeliveryFactory.WebSocketImpl.WebSocket4Net); } } switch (SessionType) { case SessionTypeEnum.RDP: return(CoreFactory.CreateSession(new PlatformSession.Params() .WithOAuthGrantType(new GrantPassword().UserName(Credentials.RDPUser) .Password(Credentials.RDPPassword)) .AppKey(Credentials.AppKey) .WithTakeSignonControl(true) .OnState((s, state, msg) => Console.WriteLine($"{DateTime.Now}:{msg}. (State: {state})")) .OnEvent((s, eventCode, msg) => Console.WriteLine($"{DateTime.Now}:{msg}. (Event: {eventCode})")))); case SessionTypeEnum.DEPLOYED: return(CoreFactory.CreateSession(new PlatformSession.Params().WithHost(Credentials.TREPHost) .OnState((s, state, msg) => Console.WriteLine($"{DateTime.Now}: State: {state}. {msg}")) .OnEvent((s, eventCode, msg) => Console.WriteLine($"{DateTime.Now}: Event: {eventCode}. {msg}")))); case SessionTypeEnum.DESKTOP: return(CoreFactory.CreateSession(new DesktopSession.Params().AppKey(Credentials.AppKey) .OnState((s, state, msg) => Console.WriteLine($"{DateTime.Now}:{msg}. (State: {state})")) .OnEvent((s, eventCode, msg) => Console.WriteLine($"{DateTime.Now}:{msg}. (Event: {eventCode})")))); case SessionTypeEnum.DEPLOYED_DEPRECATED: return(CoreFactory.CreateSession(new DeployedPlatformSession.Params().Host(Credentials.TREPHost) .OnState((s, state, msg) => Console.WriteLine($"{DateTime.Now}:{msg}. (State: {state})")) .OnEvent((s, eventCode, msg) => Console.WriteLine($"{DateTime.Now}:{msg}. (Event: {eventCode})")))); default: throw new IndexOutOfRangeException($"Unknown Session Type: {SessionType}"); } }