From 822c55574dd35f9bb61e0fa583fcd66bbe206e27 Mon Sep 17 00:00:00 2001
From: catloversg <152669316+catloversg@users.noreply.github.com>
Date: Sat, 1 Feb 2025 02:07:38 +0700
Subject: [PATCH] MISC: Allow using wss for RFA (#1942)
---
src/GameOptions/ui/RemoteAPIPage.tsx | 7 +++++++
src/RemoteFileAPI/Remote.ts | 4 ++--
src/Settings/Settings.ts | 4 +++-
3 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/GameOptions/ui/RemoteAPIPage.tsx b/src/GameOptions/ui/RemoteAPIPage.tsx
index de7ff8f40..b90c006a4 100644
--- a/src/GameOptions/ui/RemoteAPIPage.tsx
+++ b/src/GameOptions/ui/RemoteAPIPage.tsx
@@ -4,6 +4,7 @@ import { GameOptionsPage } from "./GameOptionsPage";
import { isValidConnectionHostname, isValidConnectionPort, Settings } from "../../Settings/Settings";
import { ConnectionBauble } from "./ConnectionBauble";
import { isRemoteFileApiConnectionLive, newRemoteFileApiConnection } from "../../RemoteFileAPI/RemoteFileAPI";
+import { OptionSwitch } from "../../ui/React/OptionSwitch";
export const RemoteAPIPage = (): React.ReactElement => {
const [remoteFileApiHostname, setRemoteFileApiHostname] = useState(Settings.RemoteFileApiAddress);
@@ -106,6 +107,12 @@ export const RemoteAPIPage = (): React.ReactElement => {
{portError && {portError}}
+ (Settings.UseWssForRemoteFileApi = newValue)}
+ text="Use wss"
+ tooltip={<>Use wss instead of ws when connecting to RFA clients.>}
+ />
diff --git a/src/RemoteFileAPI/Remote.ts b/src/RemoteFileAPI/Remote.ts
index b3f7d6b7e..e94a74c38 100644
--- a/src/RemoteFileAPI/Remote.ts
+++ b/src/RemoteFileAPI/Remote.ts
@@ -2,6 +2,7 @@ import { RFAMessage } from "./MessageDefinitions";
import { RFARequestHandler } from "./MessageHandlers";
import { SnackbarEvents } from "../ui/React/Snackbar";
import { ToastVariant } from "@enums";
+import { Settings } from "../Settings/Settings";
function showErrorMessage(address: string, detail: string) {
SnackbarEvents.emit(`Error with websocket ${address}, details: ${detail}`, ToastVariant.ERROR, 5000);
@@ -9,7 +10,6 @@ function showErrorMessage(address: string, detail: string) {
export class Remote {
connection?: WebSocket;
- static protocol = "ws";
ipaddr: string;
port: number;
@@ -23,7 +23,7 @@ export class Remote {
}
public startConnection(): void {
- const address = Remote.protocol + "://" + this.ipaddr + ":" + this.port;
+ const address = (Settings.UseWssForRemoteFileApi ? "wss" : "ws") + "://" + this.ipaddr + ":" + this.port;
try {
this.connection = new WebSocket(address);
} catch (error) {
diff --git a/src/Settings/Settings.ts b/src/Settings/Settings.ts
index 655f55311..56ab21329 100644
--- a/src/Settings/Settings.ts
+++ b/src/Settings/Settings.ts
@@ -113,6 +113,8 @@ export const Settings = {
RemoteFileApiAddress: "localhost",
/** Port the Remote File API client will try to connect to. 0 to disable. */
RemoteFileApiPort: 0,
+ /** Use wss instead of ws when connecting to RFA clients */
+ UseWssForRemoteFileApi: false,
/** Whether to save the game when the player saves any file. */
SaveGameOnFileSave: true,
/** Whether to hide the confirmation dialog for augmentation purchases. */
@@ -179,7 +181,7 @@ export const Settings = {
hideTrailingDecimalZeros: false,
/** Whether to hide thousands separators. */
hideThousandsSeparator: false,
- /** Whether to use engineering notation instead of scientific for exponentials. */
+ /** Whether to use engineering notation instead of scientific for exponential form. */
useEngineeringNotation: false,
/** Whether to disable suffixes and always use exponential form (scientific or engineering). */
disableSuffixes: false,