ÖZET
Modern tarayıcılarla basit gerçek zamanlı iletişim için Yerel WebSocket kullanın. Otomatik yeniden bağlanma, yedek taşıyıcılar veya odalar/isim alanları gerektiğinde Socket.IO kullanın. Socket.IO 200KB+ ek yük getirir ancak uç durumları yönetir. Modern PetstoreAPI her ikisini de kullanır: Açık artırmalar için Yerel WebSocket, sohbet için Socket.IO.
Giriş
Gerçek zamanlı çift yönlü iletişime ihtiyacınız var. Yerel WebSocket mi yoksa Socket.IO mu kullanmalısınız? Yerel WebSocket tarayıcılara yerleşiktir ve hızlıdır. Socket.IO ek özellikler sunar ancak paket boyutunu 200KB+'den fazla artırır.
Modern PetstoreAPI her ikisini de kullanır. Performansın önemli olduğu canlı evcil hayvan açık artırmaları için Yerel WebSocket. Otomatik yeniden bağlanma ve odaların değerli olduğu müşteri destek sohbeti için Socket.IO.
Gerçek zamanlı API'leri test ediyorsanız, Apidog hem Yerel WebSocket hem de Socket.IO testini destekler.
Yerel WebSocket
Yerel WebSocket, çift yönlü iletişim için tarayıcı standardıdır.
Temel Kullanım
const ws = new WebSocket('wss://petstoreapi.com/auctions/019b4132');
ws.onopen = () => {
ws.send(JSON.stringify({ type: 'bid', amount: 500 }));
};
ws.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log('Received:', data);
};
ws.onerror = (error) => {
console.error('WebSocket error:', error);
};
ws.onclose = () => {
console.log('Connection closed');
};
Avantajlar
1. Bağımlılık yok - Tarayıcılara yerleşiktir 2. Hızlı - Minimum ek yük 3. Basit - Doğrudan API 4. Küçük - Paket boyutu üzerinde etkisi yok
Dezavantajlar
1. Otomatik yeniden bağlanma yok - Yeniden deneme mantığını kendiniz uygulamanız gerekir 2. Yedek yok - WebSocket başarısız olursa takılı kalırsınız 3. Oda/isim alanı yok - Kendiniz uygulamanız gerekir 4. Manuel kalp atışı - Bağlantı sağlığı için ping/pong gerekir
Socket.IO Özellikleri
Socket.IO, ek özelliklere sahip WebSocket üzerine inşa edilmiş bir kütüphanedir.
Temel Kullanım
import io from 'socket.io-client';
const socket = io('https://petstoreapi.com', {
path: '/chat'
});
socket.on('connect', () => {
socket.emit('join-room', 'support-123');
});
socket.on('message', (data) => {
console.log('Received:', data);
});
socket.on('disconnect', () => {
console.log('Disconnected - will auto-reconnect');
});
Anahtar Özellikler
1. Otomatik Yeniden Bağlanma
const socket = io('https://petstoreapi.com', {
reconnection: true,
reconnectionDelay: 1000,
reconnectionAttempts: 5
});
2. Yedek Taşıyıcılar
WebSocket başarısız olursa, Socket.IO şunları dener:
- WebSocket
- HTTP long-polling
- HTTP streaming
3. Odalar ve İsim Alanları
// Sunucu
io.of('/chat').on('connection', (socket) => {
socket.join('support-123');
socket.to('support-123').emit('user-joined');
});
// İstemci
const socket = io('/chat');
4. Onaylar
socket.emit('bid', { amount: 500 }, (response) => {
console.log('Sunucu onayladı:', response);
});
5. İkili Veri Desteği
socket.emit('image', buffer);
Dezavantajlar
1. Büyük paket - 200KB+ küçültülmüş 2. Sunucu bağımlılığı - Socket.IO sunucusu gerektirir 3. Daha karmaşık - Öğrenilmesi gereken ek kavramlar 4. Ek yük - Fazladan protokol katmanı
Karşılaştırma
| Özellik | Yerel WebSocket | Socket.IO |
|---|---|---|
| Paket Boyutu | 0 KB | 200+ KB |
| Otomatik Yeniden Bağlanma | Hayır | Evet |
| Yedekleme | Hayır | Evet (long-polling) |
| Odalar | Hayır | Evet |
| Onaylar | Hayır | Evet |
| İkili Veri | Evet | Evet |
| Tarayıcı Desteği | Modern | Tümü (yedekleme ile) |
| Sunucu | Herhangi bir WebSocket | Socket.IO sunucusu |
| Karmaşıklık | Basit | Daha karmaşık |
Modern PetstoreAPI Her İkisini Nasıl Kullanır
Açık Artırmalar İçin Yerel WebSocket
Canlı evcil hayvan açık artırmaları düşük gecikme süresi gerektirir:
const ws = new WebSocket('wss://petstoreapi.com/auctions/019b4132');
ws.onmessage = (event) => {
const { type, data } = JSON.parse(event.data);
if (type === 'bid') {
updateBidDisplay(data.amount, data.userId);
}
if (type === 'sold') {
showSoldNotification(data.winnerId);
}
};
// Teklif ver
ws.send(JSON.stringify({
type: 'bid',
amount: 500
}));
Neden Yerel WebSocket:
- Performans açısından kritik
- Modern tarayıcı kitlesi
- Basit teklif protokolü
- Odalara gerek yok
Destek Sohbeti İçin Socket.IO
Müşteri destek sohbeti güvenilirlik gerektirir:
const socket = io('https://petstoreapi.com/chat');
socket.on('connect', () => {
socket.emit('join-support', { userId: 'user-456' });
});
socket.on('message', (msg) => {
displayMessage(msg);
});
socket.on('agent-typing', () => {
showTypingIndicator();
});
// Mesaj gönder
socket.emit('message', {
text: 'I need help with my order',
userId: 'user-456'
});
Neden Socket.IO:
- Otomatik yeniden bağlanma (mobil kullanıcılar)
- Odalar (çoklu destek oturumları)
- Kurumsal ağlar için yedekleme
- Mesaj teslimatı için onaylar
Modern PetstoreAPI WebSocket belgeleri ve Socket.IO belgelerine bakın.
Apidog ile Test Etme
Apidog her iki protokolü de destekler:
Yerel WebSocket'i Test Edin:
1. WebSocket isteği oluşturun
2. wss://petstoreapi.com/auctions/019b4132 adresine bağlanın
3. Test mesajları gönderin
4. Yanıtları doğrulayın
Socket.IO'yu Test Edin:
1. Socket.IO bağlantısı oluşturun
2. Olayları ve onayları test edin
3. Oda davranışını doğrulayın
4. Yeniden bağlanma senaryolarını test edin
Her Birini Ne Zaman Kullanmalı
Yerel WebSocket'i Şu Durumlarda Kullanın:
- Yalnızca modern tarayıcılar için geliştirme yapıyorsanız
- Performans kritik önem taşıyorsa
- Basit çift yönlü mesajlaşma gerektiğinde
- Minimum paket boyutu istiyorsanız
- Otomatik yeniden bağlanmaya ihtiyacınız yoksa
Örnekler:
- Canlı açık artırmalar
- Gerçek zamanlı panolar
- Oyunlar (manuel yeniden bağlanma ile)
- Borsa fiyat göstergeleri
Socket.IO'yu Şu Durumlarda Kullanın:
- Otomatik yeniden bağlanmaya ihtiyacınız varsa
- Eski tarayıcıları destekliyorsanız
- Kurumsal ağlar (yedekleme gerektiren)
- Oda/isim alanlarına ihtiyacınız varsa
- Onaylar istiyorsanız
- Mobil uygulamalar (güvenilmez ağlar)
Örnekler:
- Sohbet uygulamaları
- Ortak düzenleme
- Müşteri desteği
- Teslimat onayı ile bildirimler
Sonuç
Yerel WebSocket daha hızlı ve basittir. Socket.IO daha fazla özelliğe sahiptir ancak daha ağırdır. Hangisinin “daha iyi” olduğuna değil, ihtiyaçlarınıza göre seçim yapın.
Modern PetstoreAPI her ikisini de kullanır: Performansın önemli olduğu yerlerde Yerel WebSocket, güvenilirlik ve özelliklerin önemli olduğu yerlerde Socket.IO.
Sıkça Sorulan Sorular
Socket.IO'yu Yerel WebSocket istemcileriyle kullanabilir miyim?
Hayır. Socket.IO özel bir protokol kullanır. Socket.IO sunucusuna bağlanmak için Socket.IO istemcisine ihtiyacınız vardır.
Socket.IO kurumsal güvenlik duvarları üzerinden çalışır mı?
Evet. WebSocket engellenirse, Socket.IO HTTP long-polling'e geri döner.
Socket.IO Yerel WebSocket'ten daha mı yavaş?
Biraz. Socket.IO protokol ek yükü ekler, ancak çoğu uygulama için fark önemsizdir.
Socket.IO'dan Yerel WebSocket'e geçiş yapabilir miyim?
Evet, ancak yeniden bağlanma, odalar ve diğer özellikleri kendiniz uygulamanız gerekecek.
Yerel WebSocket odaları destekler mi?
Hayır. Oda mantığını sunucuda uygulamanız ve hangi bağlantıların hangi odalara ait olduğunu takip etmeniz gerekir.
