Revert "[#451] added websocket connexion"

This reverts commit 47525a5e21.
This commit is contained in:
Camille Moussu
2026-01-12 09:25:23 +01:00
parent 47525a5e21
commit bcc3019e4b
10 changed files with 49 additions and 270 deletions
-67
View File
@@ -1,67 +0,0 @@
import { useEffect, useRef } from "react";
import { useAppSelector } from "../app/hooks";
import { createWebSocketConnection } from "./createWebSocketConnection";
import { registerToCalendars } from "./websocketAPI/registerToCalendars";
export function WebSocketGate() {
const socketRef = useRef<WebSocket | null>(null);
const isAuthenticated = useAppSelector((state) =>
Boolean(state.user.userData && state.user.tokens)
);
const calendarList = useAppSelector((state) => state.calendars.list);
// Manage WebSocket connection
useEffect(() => {
if (!isAuthenticated) {
if (socketRef.current) {
socketRef.current.close();
socketRef.current = null;
}
return;
}
const connect = async () => {
try {
const socket = await createWebSocketConnection();
socketRef.current = socket;
} catch (error) {
console.error("Failed to create WebSocket connection:", error);
}
};
connect();
return () => {
if (socketRef.current) {
socketRef.current.close();
socketRef.current = null;
}
};
}, [isAuthenticated]);
const hasRegisteredRef = useRef(false);
// Register to calendars once
useEffect(() => {
if (!socketRef.current || socketRef.current.readyState !== WebSocket.OPEN) {
return;
}
if (hasRegisteredRef.current) {
return;
}
const calendarPaths = Object.values(calendarList).map(
(cal) => `/calendars/${cal.id}`
);
if (calendarPaths.length > 0) {
registerToCalendars(socketRef.current, calendarPaths);
hasRegisteredRef.current = true;
}
}, [calendarList]);
return null;
}
-12
View File
@@ -1,12 +0,0 @@
import { api } from "../../utils/apiUtils";
import { WebSocketTicket } from "./types";
export async function fetchWebSocketTicket(): Promise<WebSocketTicket> {
const response = await api.post("ws/ticket");
if (!response.ok) {
throw new Error("Failed to fetch WebSocket ticket");
}
return response.json();
}
-7
View File
@@ -1,7 +0,0 @@
export interface WebSocketTicket {
clientAddress: string;
value: string;
generatedOn: string;
validUntil: string;
username: string;
}
@@ -1,63 +0,0 @@
import { fetchWebSocketTicket } from "./api/fetchWebSocketTicket";
import { WS_INBOUND_EVENTS } from "./protocols";
export async function createWebSocketConnection(): Promise<WebSocket> {
const wsBaseUrl = (window as any).WEBSOCKET_URL;
if (!wsBaseUrl) {
throw new Error("WEBSOCKET_URL is not defined");
}
const ticket = await fetchWebSocketTicket();
const socket = new WebSocket(
`${wsBaseUrl}/ws?ticket=${encodeURIComponent(ticket.value)}`
);
await new Promise<void>((resolve, reject) => {
const openHandler = () => {
console.log("WebSocket connection opened");
socket.removeEventListener(
WS_INBOUND_EVENTS.CONNECTION_OPENED,
openHandler
);
socket.removeEventListener(WS_INBOUND_EVENTS.ERROR, errorHandler);
resolve();
};
const errorHandler = (error: Event) => {
console.error("WebSocket connection failed:", error);
socket.removeEventListener(
WS_INBOUND_EVENTS.CONNECTION_OPENED,
openHandler
);
socket.removeEventListener(WS_INBOUND_EVENTS.ERROR, errorHandler);
reject(new Error("WebSocket connection failed"));
};
socket.addEventListener(WS_INBOUND_EVENTS.CONNECTION_OPENED, openHandler);
socket.addEventListener(WS_INBOUND_EVENTS.ERROR, errorHandler);
});
socket.addEventListener(WS_INBOUND_EVENTS.MESSAGE, (event) => {
try {
const message = JSON.parse(event.data);
console.log("WebSocket message received:", message);
// TODO: Handle different message types
} catch (error) {
console.error("Failed to parse WebSocket message:", error);
}
});
socket.addEventListener(WS_INBOUND_EVENTS.CONNECTION_CLOSED, (event) => {
console.log("WebSocket closed:", event.code, event.reason);
// TODO: Add reconnection logic
});
socket.addEventListener(WS_INBOUND_EVENTS.ERROR, (error) => {
console.error("WebSocket error:", error);
});
return socket;
}
-13
View File
@@ -1,13 +0,0 @@
// WebSocket event listeners (browser events)
export const WS_INBOUND_EVENTS = {
CONNECTION_OPENED: "open",
MESSAGE: "message",
ERROR: "error",
CONNECTION_CLOSED: "close",
} as const;
// WebSocket message types sent to server
export const WS_OUTBOUND_EVENTS = {
REGISTER_CLIENT: "register",
UNREGISTER_CLIENT: "unregister",
} as const;
@@ -1,17 +0,0 @@
export function registerToCalendars(
socket: WebSocket,
calendarURIList: string[]
): void {
if (socket.readyState !== WebSocket.OPEN) {
throw new Error("Cannot register: WebSocket is not open");
}
[];
socket.send(
JSON.stringify({
register: calendarURIList,
})
);
console.log("Registered to calendars", calendarURIList);
}
@@ -1,18 +0,0 @@
export function unregisterToCalendars(
socket: WebSocket,
calendarURIList: string[]
): void {
if (socket.readyState !== WebSocket.OPEN) {
throw new Error("Cannot unregister: WebSocket is not open");
}
[];
console.log(calendarURIList);
socket.send(
JSON.stringify({
unregister: calendarURIList,
})
);
console.log("Unregistered to calendars", calendarURIList);
}