Junior
Sunucu ve istemci arasında birkaç iletişim yöntemi açıklayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
İstemci (tarayıcı) ile sunucu arasında birkaç temel iletişim yöntemi vardır.
-
HTTP/HTTPS (Polling/Kısa Polling):
- İstemci, sunucuya bir istek gönderir ve yanıt bekler.
- Sunucu isteği işler ve yanıtı gönderir.
- Kısa Polling'de, istemci düzenli olarak sunucuya istek göndererek güncellemeleri kontrol eder.
- Uygulaması basittir, ancak sık güncellemeler için verimsizdir çünkü her istek maliyetlidir.
// Basit bir Kısa Polling örneği function checkUpdates() { fetch('/api/updates') .then(response => response.json()) .then(data => { // Alınan verilerin işlenmesi }) .finally(() => { setTimeout(checkUpdates, 5000); // 5 saniye sonra tekrar }); } checkUpdates(); -
Long Polling:
- İstemci, sunucuya bir istek gönderir, sunucu yeni veri olana kadar veya zaman aşımı gerçekleşene kadar bağlantıyı açık tutar.
- Veri geldiğinde, sunucu hemen yanıtı gönderir ve ardından istemci yeni bir istek gönderir.
- Kısa Polling'den daha etkilidir, ancak veri alımı ile sonraki isteğin gönderimi arasında gecikme vardır.
-
WebSockets:
- İstemci ile sunucu arasında kalıcı, çift yönlü bir bağlantı kurar.
- Bağlantı kurulduktan sonra, her iki taraf da herhangi bir zamanda veri gönderebilir ve alabilir, ek HTTP istekleri gerekmez.
- Gerçek zamanlı uygulamalar (sohbetler, çevrimiçi oyunlar, bildirimler) için idealdir.
const socket = new WebSocket('ws://localhost:8080'); socket.onopen = function(event) { console.log('Bağlantı kuruldu'); socket.send('Sunucuya merhaba!'); }; socket.onmessage = function(event) { console.log('Sunucudan mesaj alındı:', event.data); }; socket.onclose = function(event) { if (event.wasClean) { console.log(`Temiz kapanış, kod=${event.code}, neden=${event.reason}`); } else { console.error('Bağlantı kesildi'); } }; socket.onerror = function(error) { console.error('WebSocket hatası:', error); }; -
Server-Sent Events (SSE):
- Sunucunun, HTTP bağlantısı üzerinden tek taraflı olarak veri göndermesine olanak tanır.
- İstemci, sunucudan gelen olay akışına abone olur.
- Sunucu, güncellemeleri istemciye göndermesi gereken durumlar için uygundur, ancak istemci geri veri göndermediğinde (örneğin, haber akışı, görev ilerlemesi) kullanılır.
const eventSource = new EventSource('/api/stream'); eventSource.onmessage = function(event) { console.log('Sunucudan gelen olay:', event.data); }; eventSource.onerror = function(error) { console.error('SSE hatası:', error); eventSource.close(); // Hata durumunda bağlantıyı kapat };
Her yöntemin avantajları ve dezavantajları vardır ve seçim, uygulamanın güncelleme sıklığı, veri hacmi ve çift yönlü iletişim ihtiyacına göre yapılır.