cloudflare-demos

service-bindings Service Bindings

Worker-to-Worker RPC, zero overhead — source on GitHub

src/backend.ts
import { WorkerEntrypoint } from 'cloudflare:workers'

export default class Backend extends WorkerEntrypoint {
  add(a: number, b: number): number {
    return a + b
  }

  greet(name: string): string {
    return `Hello, ${name}!`
  }
}
src/gateway.ts
import { Hono } from 'hono'

const app = new Hono<{ Bindings: Env }>()

app.get('/add/:a/:b', async (c) => {
  const result = await c.env.BACKEND.add(Number(c.req.param('a')), Number(c.req.param('b')))
  return c.json({ result })
})

app.get('/greet/:name', async (c) => {
  return c.text(await c.env.BACKEND.greet(c.req.param('name')))
})

export default app
Try it — requests go to a Dynamic Worker running this code. State is isolated per browser session and expires after a while.
response will appear here
response