mirror of
https://github.com/immense/Remotely.git
synced 2025-10-26 11:27:15 +00:00
Rebranding.
This commit is contained in:
parent
27a3ab518a
commit
4f05cb9488
@ -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)
|
||||
|
||||
@ -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}");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
@ -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
@ -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");
|
||||
});
|
||||
}
|
||||
@ -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
@ -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.");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user