private static void OnMessageReceived(object sender, MessageEventArgs e) { if (e.IsPing) { Console.WriteLine("We were pinged"); } else if (e.IsBinary) { Console.WriteLine("Got binary response from websocket"); var response = BytesResponsePayload.Deserialize(e.RawData); Console.WriteLine($"Success: {response.IsSuccess}"); Console.WriteLine($"Metadata: {response.Metadata.Serialize()}"); if (response.Metadata.Source == typeof(DisplayScreen)) { using var ms = new MemoryStream(response.Payload); var displayCapture = Image.FromStream(ms); DrawImage.ConsoleWriteImage((Bitmap)displayCapture); } else { Console.WriteLine($"Raw Payload: {GetPrettyByteArrayString(response.Payload)}"); } } else if (e.IsText) { Console.WriteLine("Got text response from websocket"); Console.WriteLine($"Response: {e.Data}"); } }
public IResponsePayload <byte[]> Execute(Request request) { var psi = new ProcessStartInfo("shutdown", "/s /t 0"); psi.CreateNoWindow = true; psi.UseShellExecute = false; var process = Process.Start(psi); return(process.ExitCode == 0 ? BytesResponsePayload.NoPayloadSuccess(new ResponseMetadata(GetType())) : BytesResponsePayload.NoPayloadFailure(new ResponseMetadata(GetType()))); }
public RemoteControlPage() { InitializeComponent(); //ScreenCapture.BitmapOptimizations = true; //ScreenCapture.DownsampleToViewSize = true; //ScreenCapture.Finish += ScreenCapture_Finish; //ScreenCapture.Source = new StreamImageSource() //{ // Stream = async (token) => await Task.FromResult<Stream>(new MemoryStream(imageBytes)) //}; canvasView = new SKCanvasView(); canvasView.PaintSurface += OnCanvasViewPaintSurface; Content = canvasView; ClientConnection.Instance.Connection.OnMessageReceived += async(sender, e) => { await Task.Run(() => { Debug.WriteLine("Got message"); if (e.IsBinary) { var response = BytesResponsePayload.Deserialize(e.RawData); if (response.Metadata.Source == typeof(DisplayScreen)) { // TODO - This won't work. High GC overhead and serious latency. Take a look at SkiaSharp! //ScreenCapture.Source = ImageSource.FromStream(() => new MemoryStream(response.Payload)); //ScreenCapture.ReloadImage(); //viewModel.UpdateImage(response.Payload); skBitmap = SKBitmap.Decode(response.Payload); canvasView.InvalidateSurface(); } } }); }; //Commands.ExecuteRemotely(ClientConnection.Instance.Connection, new Request(nameof(DisplayScreen))); cancellationToken = new CancellationToken(); Task.Run(async() => { while (!cancellationToken.IsCancellationRequested) { Commands.ExecuteRemotely(ClientConnection.Instance.Connection, new Request(nameof(DisplayScreen))); await Task.Delay(16); } }); }
public IResponsePayload <byte[]> Execute(Request request) { if (!float.TryParse(request.Parameters[0], out float volumeChange)) { return(BytesResponsePayload.NoPayloadFailure(new ResponseMetadata(GetType()))); } if (defaultPlaybackDevice == null) { var enumerator = new MMDeviceEnumerator(); defaultPlaybackDevice = enumerator.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia); } defaultPlaybackDevice.AudioEndpointVolume.MasterVolumeLevelScalar = volumeChange; return(BytesResponsePayload.NoPayloadSuccess(new ResponseMetadata(GetType()))); }
public IResponsePayload <byte[]> Execute(Request request) { audio.PlayStop(); return(BytesResponsePayload.NoPayloadSuccess(new ResponseMetadata(GetType()))); }
public IResponsePayload <byte[]> Execute(Request request) { Console.WriteLine("Hello World!"); return(BytesResponsePayload.PayloadSuccess(Encoding.UTF8.GetBytes("Hello World"), new ResponseMetadata(GetType()))); }