0Pricing
FastAPI Backend Development Bootcamp · Ders

FastAPI'de WebSockets Uygulama

FastAPI uygulamanıza WebSocket uç noktaları eklemeyi ve bağlantıları yönetmeyi öğrenin.

FastAPI'de WebSockets Uygulama, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, FastAPI Backend Development Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

Real-time with FastAPI WebSockets

FastAPI ile WebSocket uygulamaya hoş geldiniz! WebSocket'ler, bir istemci ile sunucu arasında kalıcı, tam çift yönlü (full-duplex) bir iletişim kanalı sağlar.

  • Tam çift yönlü (Full-duplex): Hem istemci hem de sunucu aynı anda mesaj gönderip alabilir.
  • Gerçek zamanlı: Sohbet, canlı paneller veya oyun gibi anlık güncelleme gerektiren uygulamalar için idealdir.

FastAPI, Python'ın async/await özelliklerinden yararlanarak WebSocket'ler için mükemmel bir yerleşik desteğe sahiptir.

Defining a WebSocket Endpoint

HTTP uç noktalarında olduğu gibi, WebSocket uç noktalarını da bir dekoratör kullanarak tanımlarsınız. @app.get() veya @app.post() yerine @app.websocket() kullanırsınız.

Uç nokta fonksiyonunuz async def olmalı ve bir websocket: WebSocket parametresi almalıdır. Bu WebSocket nesnesi, etkileşim için birincil aracınızdır.

Fonksiyonunuzun içindeki ilk adım, bağlantıyı kurmak için her zaman await websocket.accept() komutunu kullanmaktır.

Your First WebSocket Connection

İlk WebSocket uç noktamızı oluşturalım. Bu basit örnek bir bağlantıyı kabul eder, bir karşılama mesajı gönderir ve ardından bağlantıyı kapatır.

WebSocket işlemleri için anahtar öneme sahip olan @app.websocket("/ws") dekoratörüne ve async def fonksiyonuna dikkat edin.

Bu örneği çalıştırmayı deneyin ve bağlantıyı gözlemleyin:

from fastapi import FastAPI, WebSocket

app = FastAPI()

@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    await websocket.send_text("Welcome! Connection established.")
    await websocket.close()

Handling WebSocket Disconnections

WebSocket bağlantıları çeşitli nedenlerle (istemcinin sekmeyi kapatması, ağ hatası vb.) kesilebilir. Bu bağlantı kesilmelerini sorunsuz bir şekilde yönetmek çok önemlidir.

FastAPI, bir istemci bağlantıyı kestiğinde WebSocketDisconnect istisnası fırlatır. İstemciyi aktif bağlantılar listesinden çıkarmak gibi temizlik işlemlerini gerçekleştirmek için bu istisnayı yakalayabilirsiniz.

WebSocket iletişim mantığınızı bir try...except WebSocketDisconnect bloğu içine alın.

Receiving Messages from Clients

Bağlantı sağlandıktan sonra sunucunuz istemciden mesajlar alabilir. WebSocket nesnesi bunun için şu yöntemleri sunar:

  • await websocket.receive_text(): Metin verisi almak için.
  • await websocket.receive_bytes(): İkili veri almak için.
  • await websocket.receive_json(): JSON verisi almak için (python-multipart gerektirir).

Bu işlemler asenkron olduğundan, her zaman await kullanın.

Echoing Client Messages Back

Bu örnek basit bir 'echo' sunucusunu göstermektedir. Bir bağlantıyı kabul eder, ardından istemciden gelen mesajları sürekli olarak alır ve geri gönderir.

while True döngüsü bağlantıyı açık tutar ve try...except WebSocketDisconnect bloğu istemci ayrıldığında oluşacak durumu yönetir.

from fastapi import FastAPI, WebSocket, WebSocketDisconnect

app = FastAPI()

@app.websocket("/ws/echo")
async def websocket_echo(websocket: WebSocket):
    await websocket.accept()
    try:
        while True:
            data = await websocket.receive_text()
            print(f"Received from client: {data}")
            await websocket.send_text(f"Server echoed: {data}")
    except WebSocketDisconnect:
        print("Client disconnected.")

Sending Messages to Clients

Benzer şekilde, sunucunuz istemciye mesaj gönderebilir. WebSocket nesnesi şunları sunar:

  • await websocket.send_text("mesajınız"): Metin verisi göndermek için.
  • await websocket.send_bytes(b"baytlarınız"): İkili veri göndermek için.
  • await websocket.send_json({"anahtar": "değer"}): JSON verisi göndermek için.

Bu çağrıları await ile bekletmeyi unutmayın. Bir mesaj aldıktan hemen sonra yanıt göndermek yaygın bir uygulamadır.

Working with JSON Data

Yapılandırılmış veriler için JSON gönderip almak tercih edilir. FastAPI'nin WebSocket nesnesi, sizin yerinize serileştirme/serileştirmeden çıkarma işlemlerini gerçekleştirir.

  • Gönderme: send_json() fonksiyonuna bir Python dict nesnesi aktarın.
  • Alma: receive_json() fonksiyonu bir Python dict nesnesi döndürür.

Bu, dizeleri manuel olarak ayrıştırmaya kıyasla veri alışverişini basitleştirir.

Simple Connection Manager

Birden fazla istemcisi olan uygulamalar için aktif bağlantıları yönetmeniz gerekecektir. Yaygın bir yöntem, bağlı olan tüm WebSocket nesnelerini takip etmek için bir sınıf kullanmaktır.

Bu yönetici daha sonra bağlantıları eklemek/kaldırmak, belirli istemcilere mesaj göndermek veya herkese yayın yapmak için kullanılabilir.

from fastapi import WebSocket

class ConnectionManager:
    def __init__(self):
        self.active_connections: list[WebSocket] = []

    async def connect(self, websocket: WebSocket):
        await websocket.accept()
        self.active_connections.append(websocket)

    def disconnect(self, websocket: WebSocket):
        self.active_connections.remove(websocket)

    async def send_personal_message(self, message: str, websocket: WebSocket):
        await websocket.send_text(message)

# In a real app, you'd integrate 'manager' into your FastAPI endpoint
manager = ConnectionManager()

WebSocket Interaction Check

FastAPI'de WebSocket bağlantıları kurmanın ve bunlarla etkileşimde bulunmanın temellerini öğrendiniz.

Yeni bağlantıları kabul etme konusundaki anlayışınızı test edelim.

Recap: Implementing WebSockets

FastAPI'de WebSocket'leri nasıl uygulayacağınızı başarıyla öğrendiniz!

  • Uç noktaları tanımlamak için @app.websocket() kullanın.
  • Bağlantıyı kurmak için her zaman await websocket.accept() komutunu kullanın.
  • Bağlantı kesilmelerini try...except WebSocketDisconnect ile yönetin.
  • İletişim için await websocket.receive_text() ve await websocket.send_text() kullanın.
  • Yapılandırılmış veriler için send_json() ve receive_json() en iyi dostlarınızdır.

Bir sonraki adımda, bu kavramları uygulamaya koymak için gerçek zamanlı bir sohbet uygulaması oluşturacaksınız!

Sıkça Sorulan Sorular

“FastAPI'de WebSockets Uygulama” dersi ücretsiz mi?

Evet — “FastAPI'de WebSockets Uygulama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve FastAPI Backend Development Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. FastAPI Backend Development Bootcamp kursu toplamda 4 dersten oluşur.

“FastAPI'de WebSockets Uygulama” dersinde ne öğreneceğim?

FastAPI uygulamanıza WebSocket uç noktaları eklemeyi ve bağlantıları yönetmeyi öğrenin. FastAPI Backend Development Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

FastAPI Backend Development Bootcamp öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te FastAPI Backend Development Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“FastAPI'de WebSockets Uygulama” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu FastAPI Backend Development Bootcamp dersinde kod yazıp çalıştırabilir miyim?

Evet. Her FastAPI Backend Development Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. WebSocket Protokolü Temelleri
  2. FastAPI'de WebSockets Uygulama
  3. Gerçek Zamanlı Sohbet Uygulaması Oluşturma
  4. Yayınla/Abone Ol Arka Düzlemi ile WebSockets'i Ölçekleme
← FastAPI Backend Development Bootcamp Sayfasına Dön