Files
relay/client/main.ts
2024-10-18 23:35:51 -05:00

89 lines
2.7 KiB
TypeScript

const relayUrl = "http://localhost:8000"; // Go relay server URL (HTTP server)
const socketUrl = "ws://localhost:9000/events?token=static-token"; // WebSocket URL with token in query parameter
let socket: WebSocket | null = null; // Declare WebSocket connection variable
// Function to initiate an HTTP request to the Go server (no auth required)
async function initiateConnection() {
try {
// Make a GET request to the Go relay server without Authorization header
const response = await fetch(relayUrl, {
method: "GET",
});
if (response.ok) {
console.log("Successfully connected to Go relay server");
// Now, initiate the WebSocket connection to the Go WebSocket server
socket = new WebSocket(socketUrl);
// WebSocket open event
socket.onopen = () => {
console.log("Connected to Go WebSocket server");
// Now you can send sample events to the Go server
sendSampleEvents();
};
// WebSocket message event (handling messages from Go WebSocket server)
socket.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log("Message received from Go WebSocket server:", data);
};
// WebSocket error event
socket.onerror = (error) => {
console.error("WebSocket error:", error);
};
// WebSocket close event
socket.onclose = () => {
console.log("Disconnected from Go WebSocket server");
};
} else {
console.error(
"Failed to connect to Go relay server:",
response.statusText
);
}
} catch (error) {
console.error("Error during connection to Go relay server:", error);
}
}
// Function to send sample events to the Go WebSocket server
function sendSampleEvents() {
if (socket && socket.readyState === WebSocket.OPEN) {
// Example event 1: A sample GET request
const event1 = {
method: "GET",
url: "/api/example1",
data: { message: "Sample GET request event" },
};
socket.send(JSON.stringify(event1));
console.log("Sent event 1:", event1);
// Example event 2: A sample POST request
const event2 = {
method: "POST",
url: "/api/example2",
data: { message: "Sample POST request event" },
};
socket.send(JSON.stringify(event2));
console.log("Sent event 2:", event2);
// Example event 3: A custom message with random data
const event3 = {
method: "CUSTOM",
url: "/api/custom",
data: { message: "Sample custom event", timestamp: Date.now() },
};
socket.send(JSON.stringify(event3));
console.log("Sent event 3:", event3);
} else {
console.error("WebSocket is not open, cannot send events");
}
}
// Initiate connection to the Go relay server
initiateConnection();