Realtime (TURN / SFU)
WebRTC için NAT geçişi (TURN) ve medya yönlendirme (SFU). Eski adı Cloudflare Calls — dokümanlar yeniden adlandırıldı ama API ad alanı hâlâ `calls`.
- DurumGenel kullanımda
- FiyatSFU ve TURN egress GB başına; aylık ilk 1.000 GB ücretsiz. RealtimeKit dakika bazlı.
- Ücretsiz katmanvar
- Doğrulama
Realtime (TURN / SFU) nedir?
WebRTC uygulamaları için üç katmanlı bir altyapı.
| Katman | Resmî tanım |
|---|---|
| RealtimeKit | “SDKs and APIs that lets you add customizable live video and voice… It sits on top of the Realtime SFU” |
| Realtime SFU | “routes WebRTC audio, video, and DataChannels between application endpoints” |
| TURN | “a managed service that acts as a relay for WebRTC traffic” |
GA durumu
| Tarih | Olay |
|---|---|
| 27 Eylül 2022 | Kapalı beta |
| 4 Nisan 2024 | Açık beta |
| 25 Eylül 2024 | TURN GA — “TURN service is generally available (GA)” |
| 29 Ağustos 2025 | Media Transport Adapters (WebSocket) — açık beta |
Nasıl çalışır?
TURN
“TURN acts as a relay point for traffic between WebRTC clients like the browser and SFUs, particularly in scenarios where direct communication is obstructed by NATs or firewalls.”
Adresler:
| Protokol | Adres | Ana port | Alternatif |
|---|---|---|---|
| STUN/UDP | stun.cloudflare.com | 3478/udp | 53/udp |
| TURN/UDP | turn.cloudflare.com | 3478/udp | 53/udp |
| TURN/TCP | turn.cloudflare.com | 3478/tcp | 80/tcp |
| TURN/TLS | turn.cloudflare.com | 5349/tcp | 443/tcp |
STUN ücretsiz ve sınırsız. TLS 1.1, 1.2 ve 1.3 destekleniyor. MTU sınırı yok.
Kimlik bilgisi üretimi:
“Cloudflare will issue TURN keys, but these keys cannot be used as credentials with
turn.cloudflare.com. To use TURN, you need to create credentials with an expiring TTL value.”
“You should keep your TURN key on the server side (don’t share it with the browser/app).”
curl https://rtc.live.cloudflare.com/v1/turn/keys/$TURN_KEY_ID/credentials/generate-ice-servers \
-H "Authorization: Bearer $TURN_KEY_API_TOKEN" -H "Content-Type: application/json" \
--data '{"ttl": 86400}'
201 dönüyor: bir stun girdisi, altı URL’li bir turn girdisi ve hex username / credential.
Desteklenmeyen RFC’ler: DTLS · TCP relaying (RFC 6062) · IPv6 extension (RFC 6156) · oAuth (RFC 7635) · TURN bandwidth taslağı · TURN-bis çift tahsis · Mobile ICE.
Ve bir nüans: “Cloudflare Realtime is available over both IPv4 and IPv6 for TURN Client to TURN server communication, however it does not issue relay addresses in IPv6.”
FIPS: “supports FIPS 140-3 when encryption is used, such as TURN over TLS.”
SFU
Application / Session / Track modeli:
“A Session in Cloudflare Realtime correlates directly to a WebRTC PeerConnection.”
“Tracks map to
MediaStreamTrack… When you push a track to Cloudflare, it is assigned a unique ID.”
“Each track is available globally to be retrieved from any Session within an App.”
API:
POST /apps/{appId}/sessions/new
POST /apps/{appId}/sessions/{sessionId}/tracks/new
PUT /apps/{appId}/sessions/{sessionId}/tracks/update
PUT /apps/{appId}/sessions/{sessionId}/renegotiate
PUT /apps/{appId}/sessions/{sessionId}/tracks/close
POST /apps/{appId}/sessions/{sessionId}/datachannels/establish
GET /apps/{appId}/sessions/{sessionId}
OpenAPI şeması: /realtime/static/realtime-api-2024-05-21.yaml
Mimari:
“There are no dedicated servers for Realtime. Every server within Cloudflare’s network contributes to handling Realtime.”
“maintains a single PeerConnection per client”
Simulcast: yalnızca yönlendirme yapıyor — preferredRid, priorityOrdering (none veya
asciibetical), ridNotAvailable.
Güvenlik uyarısı: “An attacker could exploit these IDs to disrupt service if your backend server does not authenticate request origins properly.” Track ID’leri global olduğu için backend’inde yetkilendirme yapman şart.
Limitler (13 Ağustos 2026):
| Limit | Değer |
|---|---|
| Oturum başına API çağrısı | saniyede 50 (App bazında rate limit yok) |
| Tek API çağrısında track | 64 |
| Oturum başına track | sınırsız (pratik sınır bant genişliği) |
DataChannel canReply | yayıncı başına aynı anda bir abone |
| Track zaman aşımı | 30 saniye hareketsizlik → çöp toplama |
| DataChannel ack zaman aşımı | 30 saniye |
| Oturum durumu bekleme | PeerConnection connected olmalı, 5 saniye bekliyor |
| Oturum ve track yeniden kullanım penceresi | 30 saniye |
Codec’ler: video H264, H265, VP8, VP9, AV1 · ses Opus, G.711 A-law, G.711 µ-law.
Doğrulanamayanlar: bitrate tavanı, eşzamanlı bağlantı tavanı, app başına oturum tavanı.
SDK durumu
“Cloudflare Realtime does not offer a SDK. It instead allows you to access raw WebRTC to solve unique problems… The API is deliberately simple.”
Referans uygulama: Orange Meets — github.com/cloudflare/orange, Durable Objects ile track ID
takibi yapıyor.
Ne zaman kullanılır, ne zaman kullanılmaz
Kullanılır
- WebRTC uygulaman var ve NAT geçişi gerekiyorsa. TURN tam bunun için ve STUN ücretsiz.
- Çok katılımcılı görüşme kuruyorsan. SFU, mesh topolojinin ölçeklenmeme sorununu çözüyor.
- Ham WebRTC kontrolü istiyorsan. API kasten basit tutulmuş; kendi topolojini kurabiliyorsun.
- Hazır bir çözüm istiyorsan. RealtimeKit SDK’ları ile hızlı yol.
- 1.000 GB’lık ücretsiz katman senin için yeterliyse. Küçük bir uygulama için gerçekten cömert.
Kullanılmaz
MCU’ya ihtiyacın varsa. Sunucu tarafında akış birleştirme yok. Düşük güçlü istemcilerin varsa veya SIP birlikte çalışabilirliği gerekiyorsa bu ürün yetmiyor.
Ham SFU için SDK bekliyorsan. Doğrudan WebRTC yazacaksın — ve çekme yönündeki SDP rol tersleşmesi ciddi bir öğrenme eğrisi.
TURN üzerinden IPv6 röle adresi gerekiyorsa. Verilmiyor.
TCP relaying (RFC 6062) gerekiyorsa. Desteklenmiyor.
Yüksek bant genişlikli tek bir TURN tahsisi gerekiyorsa. Tahsis başına 50–100 Mbps ve 5–10 kpps limitleri var, ve aşınca sessizce paket düşüyor.
Port 53’e güveniyorsan. Chrome ve Firefox engelliyor.
Kimlik bilgisi yönetimini istemci tarafında yapmak istiyorsan. TURN anahtarını tarayıcıya veremiyorsun; sunucu tarafında TTL’li kimlik bilgisi üretmen gerekiyor.
IP izin listesi kurup unutmak istiyorsan. Enterprise sözleşmen yoksa DNS değişikliklerini 14 gün içinde yakalayan bir uyarı kurman gerekiyor.
RealtimeKit’i ücretsiz sanıyorsan. Ücretsiz katmanı yok ve dakika bazlı faturalanıyor.
Somut örnekler
TURN kimlik bilgisi üretmek (sunucu tarafında)
// Worker içinde — TURN anahtarı asla tarayıcıya gitmiyor
export default {
async fetch(request, env) {
const r = await fetch(
`https://rtc.live.cloudflare.com/v1/turn/keys/${env.TURN_KEY_ID}/credentials/generate-ice-servers`,
{
method: "POST",
headers: {
"Authorization": `Bearer ${env.TURN_KEY_API_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ ttl: 86400 }),
}
);
const veri = await r.json();
// Port 53'lü URL'leri ayıkla — Chrome ve Firefox engelliyor
for (const s of veri.iceServers ?? []) {
if (Array.isArray(s.urls)) s.urls = s.urls.filter(u => !u.includes(":53"));
}
return Response.json(veri);
},
};
İstemci tarafı
const iceServers = await (await fetch("/api/ice")).json();
const pc = new RTCPeerConnection({
iceServers: iceServers.iceServers,
iceTransportPolicy: "all", // yalnızca TURN test etmek için "relay"
});
SFU — track itmek
# 1) Oturum aç
SID=$(curl -sS "https://rtc.live.cloudflare.com/v1/apps/$APP_ID/sessions/new" \
--request POST -H "Authorization: Bearer $APP_TOKEN" \
--json '{}' | jq -r '.sessionId')
# 2) Track it — istemcinin OFFER'ını gönderiyorsun, ANSWER dönüyor
curl -sS "https://rtc.live.cloudflare.com/v1/apps/$APP_ID/sessions/$SID/tracks/new" \
--request POST -H "Authorization: Bearer $APP_TOKEN" \
--json '{
"sessionDescription": { "type": "offer", "sdp": "'"$OFFER_SDP"'" },
"tracks": [{ "location": "local", "mid": "0", "trackName": "kamera" }]
}' | jq
SFU — track çekmek (SDP rolü tersleniyor)
# Uzak track'i çek — bu kez SFU'dan OFFER geliyor
curl -sS "https://rtc.live.cloudflare.com/v1/apps/$APP_ID/sessions/$SID2/tracks/new" \
--request POST -H "Authorization: Bearer $APP_TOKEN" \
--json '{
"tracks": [{ "location": "remote", "sessionId": "'"$SID"'", "trackName": "kamera" }]
}' | jq '.sessionDescription.type'
# → "offer" ← itme akışında "answer" dönüyordu
# İstemcinin answer'ını renegotiate ile gönder
curl -sS "https://rtc.live.cloudflare.com/v1/apps/$APP_ID/sessions/$SID2/renegotiate" \
--request PUT -H "Authorization: Bearer $APP_TOKEN" \
--json '{ "sessionDescription": { "type": "answer", "sdp": "'"$ANSWER_SDP"'" } }'
Demo 1: TURN’ü NAT arkasından gerçekten çalıştırmak
Adım 1 — Kimlik bilgisi üret ve incele
curl -sS "https://rtc.live.cloudflare.com/v1/turn/keys/$TURN_KEY_ID/credentials/generate-ice-servers" \
-H "Authorization: Bearer $TURN_KEY_API_TOKEN" -H "Content-Type: application/json" \
--data '{"ttl": 3600}' | jq
Altı URL’yi say ve içlerinden port 53 taşıyanları işaretle.
Adım 2 — Port 53’ün engellendiğini kanıtla
# Komut satırından çalışıyor mu
nc -zvu -w 5 turn.cloudflare.com 53
nc -zvu -w 5 turn.cloudflare.com 3478
Sonra tarayıcıda chrome://webrtc-internals açıp aynı ICE sunucularıyla bağlanmayı dene.
Adım 3 — Simetrik NAT arkasında iki istemci kur
On-prem ağında, farklı NAT’ların arkasında iki cihaz. Önce STUN olmadan bağlanmayı dene.
Adım 4 — STUN ile dene
const pc = new RTCPeerConnection({
iceServers: [{ urls: "stun:stun.cloudflare.com:3478" }],
});
STUN ücretsiz ve sınırsız — çoğu senaryoda bu yetiyor.
Adım 5 — Simetrik NAT’ta TURN’e zorla
const pc = new RTCPeerConnection({
iceServers: iceServers.iceServers,
iceTransportPolicy: "relay", // yalnızca TURN kullan
});
Adım 6 — Röle limitlerini test et
Yüksek bitrate’li bir akış gönder ve paket kaybını izle.
Bu demoda ölçülenler:
| Ölçüt | STUN yok | STUN | TURN (relay) |
|---|---|---|---|
| ICE durumu (simetrik NAT) | failed | duruma göre | connected |
| Aday tipleri | host | host + srflx | relay |
| Bağlantı kurma süresi | — | ölç | ölç (daha yavaş) |
| Gecikme | — | doğrudan | röle üzerinden, daha yüksek |
| Maliyet | 0 | 0 (STUN ücretsiz) | GB başına |
| Port 53 adayı kullanıldı mı | — | ✘ | ✘ (tarayıcı engelliyor) |
packetsLost (yüksek bitrate) | — | — | limitte artıyor |
Demo 2: SFU’da SDP rol tersleşmesini göstermek
Bu demo, ham WebRTC yazan bir ekibin en çok zaman kaybettiği noktayı önceden gösteriyor.
Adım 1 — Oturum aç
SID_A=$(curl -sS ".../apps/$APP_ID/sessions/new" --request POST \
-H "Authorization: Bearer $APP_TOKEN" --json '{}' | jq -r '.sessionId')
echo "A oturumu: $SID_A"
Adım 2 — Track it ve dönen SDP tipini kaydet
curl -sS ".../apps/$APP_ID/sessions/$SID_A/tracks/new" --request POST \
-H "Authorization: Bearer $APP_TOKEN" \
--json '{"sessionDescription":{"type":"offer","sdp":"'"$OFFER_SDP"'"},
"tracks":[{"location":"local","mid":"0","trackName":"kamera"}]}' \
| jq '{tip: .sessionDescription.type, trackler: [.tracks[].trackName]}'
Adım 3 — İkinci oturumdan aynı track’i çek
SID_B=$(curl -sS ".../apps/$APP_ID/sessions/new" --request POST \
-H "Authorization: Bearer $APP_TOKEN" --json '{}' | jq -r '.sessionId')
curl -sS ".../apps/$APP_ID/sessions/$SID_B/tracks/new" --request POST \
-H "Authorization: Bearer $APP_TOKEN" \
--json '{"tracks":[{"location":"remote","sessionId":"'"$SID_A"'","trackName":"kamera"}]}' \
| jq '{tip: .sessionDescription.type}'
Adım 4 — renegotiate ile answer’ı geri gönder
curl -sS ".../apps/$APP_ID/sessions/$SID_B/renegotiate" --request PUT \
-H "Authorization: Bearer $APP_TOKEN" \
--json '{"sessionDescription":{"type":"answer","sdp":"'"$ANSWER_SDP"'"}}' | jq
Adım 5 — Track zaman aşımını göster
Yayını 30 saniyeden uzun süre durdur, sonra oturum durumunu sorgula.
curl -sS ".../apps/$APP_ID/sessions/$SID_A" -H "Authorization: Bearer $APP_TOKEN" \
| jq '.tracks'
Adım 6 — MCU olmadığını göster
Dört katılımcılı bir görüşme kur ve bir istemcinin CPU kullanımını ölç.
Adım 7 — Simulcast’in ne yaptığını göster
preferredRid ile düşük katmanı seç ve aynı ölçümü tekrarla.
Simulcast seçiyor, birleştirmiyor — ama seçim de yükü ciddi biçimde azaltıyor.
Bu demoda ölçülenler:
| Ölçüt | Değer |
|---|---|
| İtme akışında dönen SDP tipi | answer |
| Çekme akışında dönen SDP tipi | offer |
| Track zaman aşımı | 30 saniye |
| Oturum bekleme süresi | 5 saniye |
| 4 katılımcıda istemci CPU | ölç |
| 12 katılımcıda istemci CPU | ölç |
| Simulcast ile CPU düşüşü | ölç |
| Tek çağrıda track limiti | 64 |
| Oturum başına API çağrısı | saniyede 50 |
Fiyatlandırma
| RealtimeKit | SFU | TURN | |
|---|---|---|---|
| Fiyat | dakika bazlı | $0,05/GB egress | SFU ile ücretsiz, yoksa $0,05/GB |
| Ücretsiz katman | Yok | ayda ilk 1.000 GB | ayda ilk 1.000 GB |
STUN tamamen ücretsiz ve sınırsız.
Lisanslama ve hukuki çerçeve
Hizmet tescillidir ve Cloudflare Hizmet Şartları’na tabidir.
Metadata da kişisel veri. IP adresleri ve oturum zamanlaması, KVKK kapsamında kişisel veri sayılabilir. Aydınlatma metninde “içerik işlenmiyor” demek yeterli değil — metadata’nın işlendiğini de belirtmen gerekiyor.
FIPS 140-3. “supports FIPS 140-3 when encryption is used, such as TURN over TLS.” Kamu veya düzenlemeye tabi bir sektörde çalışıyorsan bu bir dayanak — ama TURN over TLS kullanman koşuluyla.
Track ID güvenliği. “An attacker could exploit these IDs to disrupt service if your backend server does not authenticate request origins properly.” Track ID’leri app içinde global. Bir kullanıcının başka bir kullanıcının track’ini çekmesini engelleyen tek şey senin backend’indeki yetkilendirme. Bu, ürünün en kritik güvenlik sorumluluğu ve tamamen sende.
Sık yapılan hatalar
API yollarını “realtime” diye yazmak. /api/resources/realtime/ 404; doğrusu hâlâ calls.
TURN anahtarını tarayıcıya vermek. Anahtar kimlik bilgisi olarak kullanılamıyor ve sunucu tarafında kalmalı.
Port 53’lü URL’leri ICE listesinde bırakmak. Chrome ve Firefox engelliyor; trickle ICE kullanmıyorsan ayıkla.
MCU beklemek. Yok. Simulcast seçiyor, birleştirmiyor.
Ham SFU için SDK aramak. Yok — doğrudan WebRTC yazacaksın.
“does not offer a SDK” ifadesini RealtimeKit’e de uygulamak. RealtimeKit’in SDK’ları var.
Çekme akışında answer beklemek. SFU offer döndürüyor; renegotiate ile answer gönderiyorsun.
Track zaman aşımını hesaba katmamak. 30 saniye hareketsizlik sonrası çöp toplanıyor.
TURN limitlerini aşıp hata beklemek. Hata gelmiyor — sessizce paket düşüyor.
IP izin listesi kurup DNS değişikliğini izlememek. Enterprise değilsen 14 gün içinde yakalayan bir uyarı kurman gerekiyor.
Backend’de track ID yetkilendirmesi yapmamak. Track’ler app içinde global; yetkilendirme senin sorumluluğun.
RealtimeKit’in ücretsiz olduğunu sanmak. Ücretsiz katmanı yok.
IPv6 röle adresi beklemek. TURN istemci-sunucu iletişimi IPv6 üzerinden çalışıyor ama röle adresleri IPv6’da verilmiyor.
TCP relaying (RFC 6062) kullanmayı planlamak. Desteklenmiyor.
Sıkça sorulan sorular
- Adı Calls mıydı? Ne değişti?
- Duyuru 9 Nisan 2025: “Cloudflare Realtime now brings together our SFU, STUN, and TURN services, along with the new RealtimeKit.” Ama yazı “rename” kelimesini hiç kullanmıyor — Calls'ı bir pakete katıyor. Adanmış bir changelog kaydı da yok.
- API yolları da değişti mi?
- Hayır — ve panel kendi içinde çelişiyor. Doğrulanmış canlı durum:
/api/resources/calls/subresources/turn/methods/create/hâlâ canlı;/api/resources/realtime/ise 404. TURN panel bağlantısı?to=/:account/calls, SFU panel bağlantısı?to=/:account/realtime/sfu. TURN kimlik host'u ise ikisi de değil:rtc.live.cloudflare.com. - SFU genel kullanıma açık mı?
- Tartışmalı. TURN kesin GA: 25 Eylül 2024 changelog kaydı “TURN service is generally available (GA)” diyor. SFU için ise changelog'da GA kaydı yok — genelindeki son durum açık beta (4 Nisan 2024). Ama Nisan 2025 blogu SFU ve TURN'ü birlikte “Generally Available” diye anlatıyor. Bu sayfada tartışmalı olarak sunulmuştur.
- MCU var mı? Sunucu tarafında akışları birleştirebilir miyim?
- Hayır — ürün baştan sona SFU. Simulcast yayıncının kodladığı katmanlar arasından seçim yapıyor, birleştirmiyor. Sonucu şu: düşük güçlü bir istemci N akış çözmek zorunda. Sunucu tarafındaki tek birleştirme RealtimeKit'in “Export” kalemi — ayrı ve dakika bazlı. SIP birlikte çalışabilirliği veya kısıtlı bir uç için tek birleşik akış gerekiyorsa ham SFU bunu yapamıyor.
- SDK var mı?
- Ham SFU ve TURN için yok. Birebir: “Cloudflare Realtime does not offer a SDK. It instead allows you to access raw WebRTC to solve unique problems… The API is deliberately simple.” RealtimeKit'in ise SDK'ları var: iOS, Android, React Native, Flutter, React, Angular, vanilla JS, WebComponents. Referans uygulama Orange Meets (
github.com/cloudflare/orange), Durable Objects ile track ID takibi yapıyor. - TURN gerekiyor mu?
- Genelde hayır. Birebir: “Cloudflare Realtime is designed to operate efficiently without the need for TURN servers in most scenarios, as Cloudflare exposes a publicly routable IP address.” TURN, doğrudan iletişimin NAT veya güvenlik duvarıyla engellendiği durumlar için.
- TURN anahtarımı doğrudan tarayıcıya verebilir miyim?
- Hayır. Birebir: “Cloudflare will issue TURN keys, but these keys cannot be used as credentials with
turn.cloudflare.com. To use TURN, you need to create credentials with an expiring TTL value.” Ve: “You should keep your TURN key on the server side (don't share it with the browser/app).” - Port 53 neden sorun çıkarıyor?
- Alternatif port olarak sunuluyor ama birebir uyarı var: “Port 53 is blocked by many ISPs, and by popular browsers such as Chrome and Firefox.” Trickle ICE kullanıyorsan sorun olmuyor; kullanmıyorsan “you might want to filter out the URL with port 53.”
- TURN hangi RFC'leri desteklemiyor?
- Desteklenmeyenler: DTLS, TCP relaying (RFC 6062), IPv6 extension (RFC 6156), oAuth (RFC 7635), TURN bandwidth taslağı, TURN-bis çift tahsis, Mobile ICE. Ve önemli bir nüans: “Cloudflare Realtime is available over both IPv4 and IPv6 for TURN Client to TURN server communication, however it does not issue relay addresses in IPv6.”
- Cloudflare medyamı görebiliyor mu?
- Hayır. Birebir: “Cloudflare cannot access the contents of the media being relayed… WebRTC employs DTLS encryption for all media streams… Cloudflare only relays encrypted packets and cannot decrypt or inspect the media content.” İşlenen metadata: “IP addresses of the TURN clients, port numbers, and session timing information.”
- TURN limitleri ne?
- Birebir, ve hepsi tahsis (allocation) başına, hesap genelinde değil: iletişim kurulabilen benzersiz IP adresi >5 yeni IP/sn, paket hızı >5–10 kpps, veri hızı >50–100 Mbps. Ve sonucu: “Hitting these limits will result in packet drops.” Hata değil, sessiz paket kaybı.
- IP izin listesi kurabilir miyim?
- Evet ama bakım gerektiriyor. Adresler:
2a06:98c1:3200::1/128,2606:4700:48::1/128,141.101.90.1/32,162.159.207.1/32. Uyarı birebir: “If you are allowlisting IP addresses and do not have an enterprise contract, you must set up alerting that detects changes in the DNS response fromturn.cloudflare.com… within 14 days.” - SFU'da track'ler ne kadar yaşıyor?
- Track zaman aşımı 30 saniye hareketsizlik sonrası çöp toplama. DataChannel ack zaman aşımı da 30 saniye. Oturum ve track yeniden kullanım penceresi 30 saniye. İşlem yapabilmek için PeerConnection'ın
connectedolması gerekiyor ve sistem 5 saniye bekliyor. - RealtimeKit beta'da ücretsiz mi?
- Bu iddiayı tekrarlama. 2025 blogu “closed beta… no cost to test it out during the beta” diyordu ama bu eskimiş: artık dakika bazlı fiyatı yayımlanmış ve doküman sayfasında beta etiketi yok. Changelog'u ise 404. Resmî durumu doğrulanamadı — ama ücretsiz olduğunu yazma.
İlgili servisler
- RealtimeKitGörüntülü/sesli görüşme ve canlı yayın için hazır gerçek zamanlı iletişim altyapısı.
- StreamVideoyu yükler, kodlar ve adaptive bitrate ile oynatır; canlı yayın dahil.
- WorkersJavaScript/TypeScript/Python kodunu Cloudflare’in 330+ şehirdeki sunucularında, sunucu yönetmeden çalıştırır.
- Durable ObjectsHer nesnenin tek bir instance’ı olan, state tutan compute; sohbet odası, oyun oturumu, sayaç gibi işler için.
Bu sayfadaki fiyat ve özellik bilgileri 1 Eylül 2026 tarihinde Cloudflare’in resmî kaynaklarından doğrulanmıştır. Cloudflare fiyatlandırmasını önceden haber vermeden değiştirebilir; bağlayıcı bilgi içinresmî sayfaya bakın.