Gerçek Zamanlı Sohbet Uygulaması Oluşturma
FastAPI'de WebSocket özelliklerini gösteren basit bir gerçek zamanlı sohbet uygulaması geliştirin.
Gerçek Zamanlı Sohbet Uygulaması Oluşturma, CoddyKit'te ücretsiz bir FastAPI Backend Development Bootcamp dersidir. Bu, 4 dersinin 3. 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 Chat App Overview
Kendi gerçek zamanlı sohbet uygulamanızı oluşturmaya hoş geldiniz! Bu ders, FastAPI'de WebSockets hakkında öğrendiğimiz her şeyi bir araya getiriyor.
- Birden fazla sohbet bağlantısını yöneten bir FastAPI sunucusu oluşturacağız.
- İstemciler, mesajları anında gönderip almak için WebSockets aracılığıyla bağlanacaklar.
- Hem sunucu tarafı (FastAPI) hem de basit bir istemci tarafı (HTML/JavaScript) uygulamasını göreceksiniz.
Gerçek zamanlı iletişimi iş başında görmeye hazır olun!
Managing Chat Connections
Bir sohbet uygulaması için sunucumuzun tüm aktif WebSocket bağlantılarını takip etmesi gerekir. Bir kullanıcı mesaj gönderdiğinde, sunucu bunu diğer herkese yayınlayacaktır.
Bağlı istemcilere mesaj ekleme, kaldırma ve yayınlama işlemlerini yönetmek için basit bir ConnectionManager sınıfı kullanacağız.
from typing import List
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)
async def broadcast(self, message: str):
for connection in self.active_connections:
await connection.send_text(message)FastAPI WebSocket Endpoint
Şimdi istemcilerin bağlanacağı FastAPI uç noktasını oluşturalım. Bu uç nokta, ConnectionManager sınıfımızı kullanacak.
Bir istemci bağlandığında onu ekleyeceğiz. Bir mesaj gönderdiğinde onu yayınlayacağız. Bağlantısını kestiğinde ise onu kaldıracağız.
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
# ... ConnectionManager class from previous scene ...
app = FastAPI()
manager = ConnectionManager()
@app.websocket("/ws/{client_id}")
async def websocket_endpoint(websocket: WebSocket, client_id: int):
await manager.connect(websocket)
try:
while True:
data = await websocket.receive_text()
message = f"Client #{client_id} says: {data}"
await manager.broadcast(message)
except WebSocketDisconnect:
manager.disconnect(websocket)
await manager.broadcast(f"Client #{client_id} left the chat")Client-Side HTML Structure
Sohbet uygulamamızın basit bir kullanıcı arayüzüne ihtiyacı var. Mesaj göndermek için bir girdi alanı ve bunları görüntülemek için bir div kullanarak temel HTML'den yararlanacağız.
Bu, istemci tarafı etkileşimimiz için temel oluşturmaktadır.
<!DOCTYPE html>
<html>
<head>
<title>Chat App</title>
</head>
<body>
<h1>FastAPI Chat</h1>
<form action="" onsubmit="sendMessage(event)">
<input type="text" id="messageText" autocomplete="off"/>
<button>Send</button>
</form>
<ul id='messages'>
</ul>
</body>
</html>Connecting with JavaScript
Şimdi, FastAPI WebSocket sunucusuna bağlanmak için HTML'imize JavaScript ekleyelim. Sayfa yüklendiği anda bir bağlantı açacağız.
Eğer farklıysa localhost:8000 adresini kendi sunucu adresinizle değiştirmeyi unutmayın!
<script>
var ws = new WebSocket("ws://localhost:8000/ws/1");
ws.onopen = function(event) {
console.log("Connected to WebSocket server!");
};
ws.onclose = function(event) {
console.log("Disconnected from WebSocket server.");
};
ws.onerror = function(error) {
console.error("WebSocket Error: ", error);
};
</script>Sending Messages from Client
Kullanıcıların bir mesaj yazıp sunucuya gönderebilmeleri gerekir. Girdiyi yakalayan ve WebSocket bağlantısı aracılığıyla gönderen bir JavaScript işlevi oluşturacağız.
Bu işlev, form gönderildiğinde çağrılır.
<script>
// ... WebSocket connection setup ...
function sendMessage(event) {
var input = document.getElementById("messageText");
ws.send(input.value);
input.value = '';
event.preventDefault();
}
</script>Receiving & Displaying Messages
Bir sohbet uygulamasının temeli, mesajları almak ve bunları görüntülemektir. Yeni mesajları listemize eklemek için ws.onmessage olay işleyicisini uygulayacağız.
<script>
// ... WebSocket connection & sendMessage function ...
ws.onmessage = function(event) {
var messages = document.getElementById('messages');
var message = document.createElement('li');
var content = document.createTextNode(event.data);
message.appendChild(content);
messages.appendChild(message);
};
</script>Full FastAPI Chat Server
FastAPI sohbet sunucumuz için eksiksiz Python kodu burada. Bunu main.py olarak kaydedin ve uvicorn main:app --reload komutunu kullanarak çalıştırın.
Bu sunucu bağlantıları dinleyecek, mesajları yayınlayacak ve kullanıcı giriş/çıkışlarını duyuracaktır.
from typing import List
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from fastapi.responses import HTMLResponse
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 broadcast(self, message: str):
for connection in self.active_connections:
await connection.send_text(message)
app = FastAPI()
manager = ConnectionManager()
html = """
<!DOCTYPE html>
<html>
<head>
<title>Chat App</title>
</head>
<body>
<h1>FastAPI Chat</h1>
<form action="" onsubmit="sendMessage(event)">
<input type="text" id="messageText" autocomplete="off"/>
<button>Send</button>
</form>
<ul id='messages'>
</ul>
<script>
var ws = new WebSocket("ws://localhost:8000/ws/1"); // Client ID is 1 for this example
ws.onopen = function(event) {
console.log("Connected to WebSocket server!");
};
ws.onmessage = function(event) {
var messages = document.getElementById('messages');
var message = document.createElement('li');
var content = document.createTextNode(event.data);
message.appendChild(content);
messages.appendChild(message);
};
ws.onclose = function(event) {
console.log("Disconnected from WebSocket server.");
};
ws.onerror = function(error) {
console.error("WebSocket Error: ", error);
};
function sendMessage(event) {
var input = document.getElementById("messageText");
ws.send(input.value);
input.value = '';
event.preventDefault();
}
</script>
</body>
</html>
"""
@app.get("/")
async def get():
return HTMLResponse(html)
@app.websocket("/ws/{client_id}")
async def websocket_endpoint(websocket: WebSocket, client_id: int):
await manager.connect(websocket)
await manager.broadcast(f"Client #{client_id} joined the chat")
try:
while True:
data = await websocket.receive_text()
message = f"Client #{client_id} says: {data}"
await manager.broadcast(message)
except WebSocketDisconnect:
manager.disconnect(websocket)
await manager.broadcast(f"Client #{client_id} left the chat")Quick Chat Logic Check
Temel bir sohbet uygulaması oluşturdunuz! ConnectionManager'ın broadcast yöntemini ve FastAPI uç noktasının mantığını göz önünde bulundurun.
İstemci A sunucuya bir mesaj gönderirse, İstemci B'nin mesajı aldığından emin olmak için bir sonraki adımda ne olur?
Chat App Summary
Tebrikler! FastAPI WebSockets kullanarak temel bir gerçek zamanlı sohbet uygulaması oluşturdunuz.
- Bir
ConnectionManagerile birden fazla aktif WebSocket bağlantısını yönetmeyi öğrendiniz. - Gelen ve giden mesajları işlemek için bir FastAPI WebSocket uç noktası uyguladınız.
- Sohbet mesajlarına bağlanmak, göndermek ve almak için basit bir HTML/JavaScript istemcisi oluşturdunuz.
Bu proje, gerçek zamanlı iletişim için WebSocket'lerin gücünü göstermektedir. Buradan yola çıkarak kullanıcı kimlik doğrulaması, kalıcı sohbet geçmişi ve daha güçlü kullanıcı arayüzü/deneyimi (UI/UX) gibi özellikler ekleyebilirsiniz.
Yapay zeka eğitmeniyle FastAPI Backend Development Bootcamp öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 21
- Dersler
- 84
Sıkça Sorulan Sorular
“Gerçek Zamanlı Sohbet Uygulaması Oluşturma” dersi ücretsiz mi?
Evet — “Gerçek Zamanlı Sohbet Uygulaması Oluşturma” 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.
“Gerçek Zamanlı Sohbet Uygulaması Oluşturma” dersinde ne öğreneceğim?
FastAPI'de WebSocket özelliklerini gösteren basit bir gerçek zamanlı sohbet uygulaması geliştirin. 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 3. dersidir.
“Gerçek Zamanlı Sohbet Uygulaması Oluşturma” 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
- WebSocket Protokolü Temelleri
- FastAPI'de WebSockets Uygulama
- Gerçek Zamanlı Sohbet Uygulaması Oluşturma
- Yayınla/Abone Ol Arka Düzlemi ile WebSockets'i Ölçekleme