Limited Time Free!  Experience website acceleration and advanced security protection!
Get Started Now 

Combine Data in Streaming Mode

In this example, an Edge Function fetches and merges multiple resources, then serves the combined stream to a client.

Code

const RESOURCE_URLS = [
  'https://data.playground.edgeone.ai/api/user/1',
  'https://data.playground.edgeone.ai/api/user/2',
];

async function combine(resources, writable) {
  for (const resource of resources) {
    await resource.pipeTo(writable, {
      preventClose: true
    });
  }

  const writer = writable.getWriter();
  writer.close();
  writer.releaseLock();
}

async function handleRequest() {
  const requests = RESOURCE_URLS.map(url => fetch(url));

  const responses = await Promise.all(requests);
  const videos = responses.map(res => res.body);

  const { readable, writable } = new TransformStream();
  combine(videos, writable);

  return new Response(readable);
}

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request));
});

Preview

Xnip2024-07-17_11-29-49.png

References