branch:
server.ts
3238 bytesRaw
import { Agent, type Connection, routeAgentRequest } from "agents";
import { env } from "cloudflare:workers";
const CORS_HEADERS = {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Methods": "GET, POST, OPTIONS, PUT, DELETE",
"Access-Control-Allow-Headers": "Content-Type, Authorization, X-API-Key",
"Access-Control-Allow-Credentials": "true",
"Access-Control-Max-Age": "86400"
};
export class MyAgent extends Agent {
onConnect(connection: Connection, ctx: { request: Request }) {
const url = new URL(ctx.request.url);
const token = url.searchParams.get("token");
const userId = url.searchParams.get("userId");
console.log(
`✅ Authenticated client connected: ${connection.id} (user: ${userId})`
);
connection.send(
`🔐 Welcome ${userId}! You are authenticated with token: ${token?.substring(0, 8)}...`
);
}
onClose(connection: Connection) {
console.log("Client disconnected:", connection.id);
}
onMessage(connection: Connection, message: string) {
console.log(`Message from client ${connection.id}:`, message);
const response = `Server received "${message}" at ${new Date().toLocaleTimeString()}`;
connection.send(response);
console.log("response sent to client:", response);
for (const conn of this.getConnections()) {
if (conn.id !== connection.id) {
conn.send(`Client ${connection.id} says: ${message}`);
}
}
}
onRequest(_request: Request): Response | Promise<Response> {
const timestamp = new Date().toLocaleTimeString();
return new Response(
`🔐 Authenticated HTTP request processed at ${timestamp}\n✅ Bearer token and API key validated successfully!`
);
}
}
function authMiddleware(request: Request): Response | Request {
const url = new URL(request.url);
// URL params can make it into application logs. Make sure
// you're not logging long-lived tokens
let token: string | null | undefined = url.searchParams.get("token");
if (!token) token = request.headers.get("Authorization")?.substring(7);
// We found token
if (token) {
console.log("Token found:", token);
// Super strong token authentication :)
if (token === "demo-token-123") {
// Continues the request flow
return request;
}
}
// Interrupt the request by returning a 401 response
console.log("Authentication failed");
return new Response("Unauthorized: Invalid or missing authentication", {
status: 401
});
}
export default {
async fetch(request: Request) {
// Handle CORS preflight requests
if (request.method === "OPTIONS") {
return new Response(null, {
headers: CORS_HEADERS
});
}
// Route agent requests with authentication middleware
return (
(await routeAgentRequest(request, env, {
cors: true,
onBeforeConnect: async (request: Request) => {
console.log("🔍 onBeforeConnect called!");
return authMiddleware(request);
},
onBeforeRequest: async (request: Request) => {
console.log("🔍 onBeforeRequest called!");
return authMiddleware(request);
}
})) || new Response("Not found", { status: 404 })
);
}
};