Sign inConnect your agent
infochanged

Realtime - Realtime SFU WebSocket adapter is generally available

Announced
Tags
Realtime
Severity
info, set by reef/rss-rule-v1
Source
https://developers.cloudflare.com/changelog/post/2026-09-30-websocket-adapter-ga/

<p>The <a href="https://developers.cloudflare.com/realtime/sfu/features/media-transport-adapters/websocket-adapter/">WebSocket adapter</a> for <a href="https://developers.cloudflare.com/realtime/sfu/">Cloudflare's Realtime SFU</a> is now generally available. The SFU (selective forwarding unit) is managed WebRTC infrastructure for live audio, video, and data across <a href="https://www.cloudflare.com/products/turn-sfu/" target="_blank" rel="noopener">Cloudflare's global network in 330+ cities<span class="external-link"> ↗︎</span></a>.</p> <p>The adapter connects live calls to any server that accepts WebSockets, such as a <a href="https://developers.cloudflare.com/durable-objects/">Durable Object</a>. It delivers uncompressed pulse-code modulation (PCM) audio and JPEG video frames. Your backend can process this media without implementing a WebRTC client.</p> <div tabindex="-1" class="heading-wrapper level-h4"><h4 id="what-you-can-build">What you can build</h4><a class="anchor-link" href="#what-you-can-build"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div> <ul> <li>Transcribe or record call audio, or let a voice agent hear and respond to participants. The <a href="https://developers.cloudflare.com/realtime/sfu/examples/ai-audio/">AI audio example</a> uses Durable Objects and Workers AI for transcription and speech generation. Separate adapters receive PCM audio and send generated speech back to participants.</li> <li>Analyze images or build previews from live video. The <a href="https://github.com/cloudflare/realtime-examples/tree/main/video-to-jpeg" target="_blank" rel="noopener">WebRTC-to-JPEG example<span class="external-link"> ↗︎</span></a> sends a browser's camera stream to a Durable Object as JPEG frames at one frame per second by default.</li> </ul> <div tabindex="-1" class="heading-wrapper level-h4"><h4 id="what-changes-for-existing-integrations">What changes for existing integrations</h4><a class="anchor-link" href="#what-changes-for-existing-integrations"><span aria-hidden="true" class="anchor-icon"><svg width="16" height="16" viewBox="0 0 24 24"><path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z"></path></svg></span></a></div> <p>Existing adapter creation requests and media formats stay the same.</p> <p>For WebRTC-to-WebSocket streaming, the SFU now automatically retries the same endpoint for up to 15 seconds instead of 5, with no additional API setting.</p> <p>The <a href="https://developers.cloudflare.com/realtime/sfu/features/media-transport-adapters/websocket-adapter/#close-adapter">close API</a> is now idempotent and returns success even if the adapter has already closed:</p> <figure class="nb-code-figure" data-nb-lang="json"><pre class="astro-code astro-code-themes github-light github-dark nb-shiki-c6xiwz" tabindex="0" data-language="json" data-nb-lang="json"><code><span class="line"><span class="nb-shiki-140thh">{</span></span> <span class="line"><span class="nb-shiki-dzsirb"> "tracks"</span><span class="nb-shiki-140thh">: [{ </span><span class="nb-shiki-dzsirb">"adapterId"</span><span class="nb-shiki-140thh">: </span><span class="nb-shiki-mdbnqw">"&lt;ADAPTER_ID&gt;"</span><span class="nb-shiki-140thh"> }]</span></span> <span class="line"><span class="nb-shiki-140thh">}</span></span></code></pre></figure> <p>Refer to the <a href="https://developers.cloudflare.com/realtime/sfu/features/media-transport-adapters/websocket-adapter/">WebSocket adapter guide</a> for setup, media formats, and API requests.</p>

The text above is the source's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.