// durable_customer_id.ts
import {DurableObject} from "cloudflare:workers";
import { Hono } from 'hono'
import {Env} from "hono";
export class DurableCustomerId extends DurableObject {
state: DurableObjectState;
app: Hono = new Hono();
sockets: Set<WebSocket>;
constructor(state: DurableObjectState, env: Env) {
super(state, env);
this.state = state;
this.sockets = new Set<WebSocket>();
const websockets = this.ctx.getWebSockets();
for (const ws of websockets) {
this.sockets.add(ws);
}
this.app.post('/mollie-payment-webhook', async (context, env) => {
const payload = await context.req.text();
console.log('Received webhook data:', payload);
const customerId = payload.split('=')[1]
for (const socket of this.sockets) {
console.log('Websocket Data Sent:', payload);
socket.send(customerId);
}
return context.text('Webhook received', 200);
});
this.app.get('/mollie-payment-websocket', (context) => {
const { 0: client, 1: server } = new WebSocketPair();
server.accept();
this.sockets.add(server);
console.log('New WebSocket client connected');
for (const socket of this.sockets) {
socket.send(" I'm Connected");
}
server.addEventListener('message', (event) => {
console.log('Message from client:', event.data);
});
server.addEventListener('close', () => {
this.sockets.delete(server);
console.log('WebSocket client disconnected');
});
return new Response(null, {
status: 101,
webSocket: client,
});
});
}
async fetch(request: Request) {
return this.app.fetch(request)
}
}
// durable_customer_id.ts
import {DurableObject} from "cloudflare:workers";
import { Hono } from 'hono'
import {Env} from "hono";
export class DurableCustomerId extends DurableObject {
state: DurableObjectState;
app: Hono = new Hono();
sockets: Set<WebSocket>;
constructor(state: DurableObjectState, env: Env) {
super(state, env);
this.state = state;
this.sockets = new Set<WebSocket>();
const websockets = this.ctx.getWebSockets();
for (const ws of websockets) {
this.sockets.add(ws);
}
this.app.post('/mollie-payment-webhook', async (context, env) => {
const payload = await context.req.text();
console.log('Received webhook data:', payload);
const customerId = payload.split('=')[1]
for (const socket of this.sockets) {
console.log('Websocket Data Sent:', payload);
socket.send(customerId);
}
return context.text('Webhook received', 200);
});
this.app.get('/mollie-payment-websocket', (context) => {
const { 0: client, 1: server } = new WebSocketPair();
server.accept();
this.sockets.add(server);
console.log('New WebSocket client connected');
for (const socket of this.sockets) {
socket.send(" I'm Connected");
}
server.addEventListener('message', (event) => {
console.log('Message from client:', event.data);
});
server.addEventListener('close', () => {
this.sockets.delete(server);
console.log('WebSocket client disconnected');
});
return new Response(null, {
status: 101,
webSocket: client,
});
});
}
async fetch(request: Request) {
return this.app.fetch(request)
}
}