Rebranding.

This commit is contained in:
Jared Goodwin 2019-02-24 20:35:39 -08:00
parent 27a3ab518a
commit 4f05cb9488
11 changed files with 103 additions and 72 deletions

View File

@ -20,14 +20,16 @@ namespace Remotely_ScreenCast
{
public class Program
{
public static ICapturer Capturer { get; set; }
public static CaptureMode CaptureMode { get; set; }
public static ICapturer Capturer { get; private set; }
public static CaptureMode CaptureMode { get; private set; }
public static bool DisconnectRequested { get; set; }
public static string Mode { get; set; }
public static string RequesterID { get; set; }
public static string HostName { get; set; }
public static HubConnection Connection { get; set; }
private static OutgoingMessages OutgoingMessages { get; set; }
public static bool IsCapturing { get; set; }
public static object LockObject { get; } = new object();
public static string Mode { get; private set; }
public static string RequesterID { get; private set; }
public static string HostName { get; private set; }
public static HubConnection Connection { get; private set; }
public static OutgoingMessages OutgoingMessages { get; private set; }
static void Main(string[] args)
{
@ -40,10 +42,8 @@ namespace Remotely_ScreenCast
.WithUrl($"http://{HostName}/RCDeviceHub")
.Build();
MessageHandlers.ApplyConnectionHandlers(Connection);
Connection.StartAsync().Wait();
OutgoingMessages = new OutgoingMessages(Connection);
try
@ -57,37 +57,16 @@ namespace Remotely_ScreenCast
CaptureMode = CaptureMode.BitBtl;
}
OutgoingMessages.SendScreenCount(
Screen.AllScreens.ToList().IndexOf(Screen.PrimaryScreen),
Screen.AllScreens.Length,
RequesterID).Wait();
Capturer.ScreenChanged += HandleScreenChanged;
OutgoingMessages.SendScreenSize(Capturer.CurrentScreenSize.Width, Capturer.CurrentScreenSize.Height).Wait();
MessageHandlers.ApplyConnectionHandlers(Connection, OutgoingMessages, Capturer);
while (!DisconnectRequested)
{
try
{
Capturer.Capture();
var newImage = ImageDiff.GetImageDiff(Capturer.CurrentFrame, Capturer.PreviousFrame, Capturer.CaptureFullscreen);
var img = ImageDiff.EncodeBitmap(newImage);
if (Capturer.CaptureFullscreen)
{
Capturer.CaptureFullscreen = false;
}
if (img?.Length > 0)
{
OutgoingMessages.SendScreenCapture(img).Wait();
}
}
catch (Exception ex)
{
Logger.Write($"Outer Error: {ex.Message}{Environment.NewLine}{ex.StackTrace}");
}
}
OutgoingMessages.NotifyRequesterUnattendedReady(RequesterID).Wait();
}
internal static void BeginCapturing()
{
}
private static async void HandleScreenChanged(object sender, Size size)

View File

@ -1,16 +1,21 @@
using Microsoft.AspNetCore.SignalR.Client;
using Remotely_ScreenCapture.Utilities;
using Remotely_ScreenCast;
using Remotely_ScreenCast.Capture;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Remotely_ScreenCapture.Sockets
{
public class MessageHandlers
{
public static void ApplyConnectionHandlers(HubConnection hubConnection)
public static void ApplyConnectionHandlers(HubConnection hubConnection,
OutgoingMessages outgoingMessages,
ICapturer capturer)
{
hubConnection.Closed += (ex) =>
{
@ -19,6 +24,37 @@ namespace Remotely_ScreenCapture.Sockets
return Task.CompletedTask;
};
hubConnection.On("GetScreenCast", (string viewerID, string requesterName) =>
{
outgoingMessages.SendScreenCount(
Screen.AllScreens.ToList().IndexOf(Screen.PrimaryScreen),
Screen.AllScreens.Length,
viewerID).Wait();
outgoingMessages.SendScreenSize(capturer.CurrentScreenSize.Width, capturer.CurrentScreenSize.Height, viewerID).Wait();
while (!Program.DisconnectRequested)
{
try
{
capturer.Capture();
var newImage = ImageDiff.GetImageDiff(capturer.CurrentFrame, capturer.PreviousFrame, capturer.CaptureFullscreen);
var img = ImageDiff.EncodeBitmap(newImage);
if (capturer.CaptureFullscreen)
{
capturer.CaptureFullscreen = false;
}
if (img?.Length > 0)
{
outgoingMessages.SendScreenCapture(img, viewerID).Wait();
}
}
catch (Exception ex)
{
Logger.Write($"Outer Error: {ex.Message}{Environment.NewLine}{ex.StackTrace}");
}
}
});
}
}
}

View File

@ -15,19 +15,24 @@ namespace Remotely_ScreenCapture.Sockets
}
private HubConnection Connection { get; }
public async Task SendScreenSize(int width, int height)
public async Task SendScreenSize(int width, int height, string viewerID)
{
await Connection.SendAsync("ScreenSize", width, height);
await Connection.SendAsync("SendScreenSize", width, height, viewerID);
}
public async Task SendScreenCapture(byte[] captureBytes)
public async Task SendScreenCapture(byte[] captureBytes, string viewerID)
{
await Connection.SendAsync("ScreenCapture", captureBytes);
await Connection.SendAsync("SendScreenCapture", captureBytes, viewerID);
}
internal async Task SendScreenCount(int primaryScreenIndex, int screenCount, string requesterID)
internal async Task SendScreenCount(int primaryScreenIndex, int screenCount, string viewerID)
{
await Connection.SendAsync("SendScreenCountToBrowser", primaryScreenIndex, screenCount, requesterID);
await Connection.SendAsync("SendScreenCountToBrowser", primaryScreenIndex, screenCount, viewerID);
}
public async Task NotifyRequesterUnattendedReady(string requesterID)
{
await Connection.SendAsync("UnattendedSessionReady", requesterID);
}
}
}

View File

@ -66,7 +66,7 @@ namespace Remotely_Server.Services
}
await RCDeviceHub.Clients.Client(clientID).SendAsync("IceCandidate", candidate, Context.ConnectionId);
}
public async Task SendOfferRequestToDevice(string clientID, string requesterName, string clientType)
public async Task SendScreenCastRequestToDevice(string clientID, string requesterName, string clientType)
{
if (clientType == "Normal")
{
@ -90,7 +90,7 @@ namespace Remotely_Server.Services
Context.Items["ClientID"] = clientID;
Context.Items["ClientType"] = clientType;
Context.Items["RequesterName"] = requesterName;
await RCDeviceHub.Clients.Client(clientID).SendAsync("GetOfferRequest", Context.ConnectionId, requesterName);
await RCDeviceHub.Clients.Client(clientID).SendAsync("GetScreenCast", Context.ConnectionId, requesterName);
}
public async Task SelectScreen(int screenIndex)
{

View File

@ -51,10 +51,29 @@ namespace Remotely_Server.Services
}
}
public async Task SendScreenCountToBrowser(int primaryScreenIndex, int screenCount, string browserHubConnectionID)
public async Task SendScreenCountToBrowser(int primaryScreenIndex, int screenCount, string rcBrowserHubConnectionID)
{
await RCBrowserHub.Clients.Client(browserHubConnectionID).SendAsync("ScreenCount", primaryScreenIndex, screenCount);
await RCBrowserHub.Clients.Client(rcBrowserHubConnectionID).SendAsync("ScreenCount", primaryScreenIndex, screenCount);
}
public async Task SendScreenSize(int width, int height, string rcBrowserHubConnectionID)
{
await RCBrowserHub.Clients.Client(rcBrowserHubConnectionID).SendAsync("ScreenSize", width, height);
}
public async Task SendScreenCapture(byte[] captureBytes, string rcBrowserHubConnectionID)
{
await RCBrowserHub.Clients.Client(rcBrowserHubConnectionID).SendAsync("ScreenCapture", captureBytes, rcBrowserHubConnectionID);
}
public async Task NotifyRequesterUnattendedReady(string browserHubConnectionID)
{
await BrowserHub.Clients.Client(browserHubConnectionID).SendAsync("UnattendedSessionReady", Context.ConnectionId);
}
public async Task SendConnectionFailedToBrowser(string browserHubConnectionID)
{
await RCBrowserHub.Clients.Client(browserHubConnectionID).SendAsync("ConnectionFailed");
}
public async Task SendRTCSessionToBrowser(object offer, string browserHubConnectionID)
{
await RCBrowserHub.Clients.Client(browserHubConnectionID).SendAsync("RTCSession", offer);
@ -63,15 +82,7 @@ namespace Remotely_Server.Services
{
await RCBrowserHub.Clients.Client(browserHubConnectionID).SendAsync("IceCandidate", candidate);
}
public async Task SendConnectionFailedToBrowser(string browserHubConnectionID)
{
await RCBrowserHub.Clients.Client(browserHubConnectionID).SendAsync("ConnectionFailed");
}
public async Task NotifyConsoleRequesterUnattendedReady(string browserHubConnectionID)
{
await BrowserHub.Clients.Client(browserHubConnectionID).SendAsync("UnattendedRTCReady", Context.ConnectionId);
}
public async Task NotifyViewerDesktopSwitching(string viewerID)
{

View File

@ -127,7 +127,7 @@ function applyMessageHandlers(hubConnection) {
hubConnection.on("ServiceID", (serviceID) => {
ServiceID = serviceID;
});
hubConnection.on("UnattendedRTCReady", (rcConnectionID) => {
hubConnection.on("UnattendedSessionReady", (rcConnectionID) => {
window.open(`/RemoteControl?clientID=${rcConnectionID}&serviceID=${ServiceID}`, "_blank");
});
}

File diff suppressed because one or more lines are too long

View File

@ -140,7 +140,7 @@ function applyMessageHandlers(hubConnection) {
hubConnection.on("ServiceID", (serviceID: string) => {
ServiceID = serviceID;
});
hubConnection.on("UnattendedRTCReady", (rcConnectionID: string) => {
hubConnection.on("UnattendedSessionReady", (rcConnectionID: string) => {
window.open(`/RemoteControl?clientID=${rcConnectionID}&serviceID=${ServiceID}`, "_blank");
});
}

View File

@ -12,7 +12,7 @@ export class RCBrowserSockets {
console.error(err.toString());
console.log("Connection closed.");
}).then(() => {
this.Connection.invoke("GetIceConfiguration");
this.SendScreenCastRequestToDevice();
});
this.Connection.closedCallbacks.push((ev) => {
console.log("Connection closed.");
@ -22,8 +22,8 @@ export class RCBrowserSockets {
});
}
;
SendOfferRequestToDevice() {
return this.Connection.invoke("SendOfferRequestToDevice", RemoteControl.ClientID, RemoteControl.RequesterName, RemoteControl.Mode);
SendScreenCastRequestToDevice() {
return this.Connection.invoke("SendScreenCastRequestToDevice", RemoteControl.ClientID, RemoteControl.RequesterName, RemoteControl.Mode);
}
SendIceCandidate(candidate) {
return this.Connection.invoke("SendIceCandidateToDevice", candidate, RemoteControl.Mode, RemoteControl.ClientID);
@ -80,7 +80,7 @@ export class RCBrowserSockets {
hubConnection.on("IceConfiguration", (iceConfiguration) => {
RemoteControl.BrowserRTC.IceConfiguration = iceConfiguration;
RemoteControl.BrowserRTC.Init();
this.SendOfferRequestToDevice();
this.SendScreenCastRequestToDevice();
});
hubConnection.on("RTCSession", (description) => {
UI.ConnectButton.removeAttribute("disabled");
@ -130,7 +130,7 @@ export class RCBrowserSockets {
RemoteControl.ClientID = newClientID;
RemoteControl.BrowserRTC.PeerConnection.close();
RemoteControl.BrowserRTC.Init();
this.SendOfferRequestToDevice();
this.SendScreenCastRequestToDevice();
});
hubConnection.on("DesktopSwitchFailed", () => {
UI.ShowMessage("Desktop switch failed. Please reconnect.");

File diff suppressed because one or more lines are too long

View File

@ -21,7 +21,7 @@ export class RCBrowserSockets {
console.error(err.toString());
console.log("Connection closed.");
}).then(() => {
this.Connection.invoke("GetIceConfiguration");
this.SendScreenCastRequestToDevice();
})
this.Connection.closedCallbacks.push((ev) => {
console.log("Connection closed.");
@ -30,8 +30,8 @@ export class RCBrowserSockets {
UI.ConnectBox.style.removeProperty("display");
});
};
SendOfferRequestToDevice() {
return this.Connection.invoke("SendOfferRequestToDevice", RemoteControl.ClientID, RemoteControl.RequesterName, RemoteControl.Mode);
SendScreenCastRequestToDevice() {
return this.Connection.invoke("SendScreenCastRequestToDevice", RemoteControl.ClientID, RemoteControl.RequesterName, RemoteControl.Mode);
}
SendIceCandidate(candidate: RTCIceCandidate) {
return this.Connection.invoke("SendIceCandidateToDevice", candidate, RemoteControl.Mode, RemoteControl.ClientID);
@ -89,7 +89,7 @@ export class RCBrowserSockets {
hubConnection.on("IceConfiguration", (iceConfiguration: any) => {
RemoteControl.BrowserRTC.IceConfiguration = iceConfiguration;
RemoteControl.BrowserRTC.Init();
this.SendOfferRequestToDevice();
this.SendScreenCastRequestToDevice();
});
hubConnection.on("RTCSession", (description: RTCSessionDescription) => {
UI.ConnectButton.removeAttribute("disabled");
@ -140,7 +140,7 @@ export class RCBrowserSockets {
RemoteControl.ClientID = newClientID;
RemoteControl.BrowserRTC.PeerConnection.close();
RemoteControl.BrowserRTC.Init();
this.SendOfferRequestToDevice();
this.SendScreenCastRequestToDevice();
});
hubConnection.on("DesktopSwitchFailed", () => {
UI.ShowMessage("Desktop switch failed. Please reconnect.");