Socket.io İstemci Entegrasyonu
Socket.io istemcisine bağlanmayı, adlandırılmış olayları dinlemeyi, sunucuya veri göndermeyi, yeniden bağlanma mantığını yönetmeyi ve odaları istemci tarafından düzenlemeyi öğrenin.
Socket.io İstemci Entegrasyonu, CoddyKit'te ücretsiz bir Frontend Academy 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, Frontend Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Frontend Academy kursu toplamda 4 dersten oluşur.
Ham WebSocket'e Göre Socket.io Ne Ekler?
Socket.io, WebSocket üzerine kurulmuş popüler bir kütüphanedir. Şunları ekler: otomatik yeniden bağlanma, uzun yoklamaya geri dönüş, odalar/ad alanları, onay geri çağrıları ve adlandırılmış olaylar. Bir istemci kütüphanesini bir sunucu kütüphanesiyle (Node.js) eşleştirir.
İstemciyi Kurma
socket.io-client paketini kurun. Bu paketin ana sürümü, sunucunun ana sürümüyle eşleşmelidir.
npm install socket.io-clientBağlanma
io'yu içe aktarın ve bir sunucu URL'sine bağlanın. Bir Socket örneği döndürür.
import { io } from 'socket.io-client';
const socket = io('https://api.example.com', {
transports: ['websocket'], // skip polling fallback for speed
auth: { token: localStorage.getItem('jwt') }
});
socket.on('connect', () => console.log('connected', socket.id));Olayları Yayma
socket.emit(eventName, payload), verileri adlandırılmış bir olayla gönderir; ham send + JSON.parse kullanımından çok daha temizdir.
socket.emit('chat-message', {
room: 'general',
text: 'Hello everyone!'
});
socket.emit('typing', { user: 'Alice' });Olayları Dinleme
socket.on(eventName, handler) bir dinleyici kaydeder. Sunucunun yaydığı olaylar burada alınır.
socket.on('chat-message', (msg) => {
console.log(`${msg.user}: ${msg.text}`);
appendMessage(msg);
});
socket.on('user-joined', (user) => {
console.log(`${user.name} joined`);
});Onaylar (Ack Geri Çağrıları)
emit çağrısının son bağımsız değişkeni olarak bir geri çağırma işlevi geçirin; sunucu bu işlevi bir yanıtla çağırabilir. Bu, RPC gibidir.
socket.emit('create-post', { title: 'Hello' }, (response) => {
if (response.error) {
console.error(response.error);
} else {
console.log('Created post', response.id);
}
});Promise Tabanlı emitWithAck
Modern Socket.io, bir promise döndüren emitWithAck işlevini sunar.
try {
const response = await socket.emitWithAck('create-post', { title: 'Hello' });
console.log('Created', response.id);
} catch (err) {
console.error('Failed', err);
}Odalar
Odalar, soketlerin sunucu tarafındaki gruplandırmalarıdır. İstemci, olaylar yayarak odaya katılır veya odadan ayrılır; sunucu yayın yapmak için io.to(room).emit() kullanır.
// Client:
socket.emit('join-room', { roomId: 'general' });
// Listen to messages in any room you've joined:
socket.on('room-message', ({ room, message }) => {
if (room === activeRoom) appendMessage(message);
});
// Leave:
socket.emit('leave-room', { roomId: 'general' });Ad Alanları
Ad alanları, aynı sunucudaki ayrı iletişim kanallarıdır; örneğin /chat ve /admin. URL'nin sonuna ek getirerek bir ad alanına bağlanın.
const chatSocket = io('https://api/chat');
const adminSocket = io('https://api/admin');Yerleşik Yeniden Bağlanma
Socket.io, üstel geri çekilmeyle otomatik olarak yeniden bağlanır. Bunu seçenekler aracılığıyla yapılandırın.
const socket = io({
reconnection: true,
reconnectionAttempts: Infinity,
reconnectionDelay: 1000,
reconnectionDelayMax: 30000,
randomizationFactor: 0.5
});
socket.on('reconnect', (attempt) => console.log('reconnected after', attempt));
socket.on('reconnect_attempt', (attempt) => console.log('trying...', attempt));Bağlantı Kesilmesini Ele Alma
Kullanıcı arayüzünü güncellemek için bağlantı kesilmesi olayını dinleyin ("yeniden bağlanılıyor..." bandını gösterin).
socket.on('disconnect', (reason) => {
console.log('Disconnected:', reason);
if (reason === 'io server disconnect') {
// Server kicked us — must reconnect manually
socket.connect();
}
});React Entegrasyonu
Soket yaşam döngüsünü özel bir kancaya veya Context sağlayıcısına sarın.
// useSocket.ts
import { useEffect, useState } from 'react';
import { io, Socket } from 'socket.io-client';
let socket: Socket;
export function useSocket() {
const [connected, setConnected] = useState(false);
useEffect(() => {
if (!socket) socket = io('/');
socket.on('connect', () => setConnected(true));
socket.on('disconnect', () => setConnected(false));
return () => { /* keep socket alive across remounts */ };
}, []);
return { socket, connected };
}Socket.io mu Ham WebSocket mi Ne Zaman Kullanılmalı?
Socket.io: odaları, onay geri çağrılarını, otomatik yeniden bağlanmayı ve aktarım geri dönüşünü hazır olarak istediğinizde kullanın. Ham WebSocket: ham protokol denetimine, en küçük paket boyutuna veya Socket.io kullanmayan bir sunucuyla birlikte çalışabilirliğe ihtiyacınız olduğunda kullanın.
Hızlı Kontrol
Socket.io'nun emit(event, payload, callback) çağrısındaki üçüncü bağımsız değişken olan geri çağırma işlevi neyi mümkün kılar?
Özet: Socket.io İstemcisi
WebSocket üzerine kurulmuş kütüphane: odalar, ad alanları, onaylar, otomatik yeniden bağlanma ve yoklama geri dönüşü. io(url, options) bağlanır. emit(event, payload) adlandırılmış olaylar gönderir; on(event, handler) dinler. RPC tarzı kullanım için üçüncü bağımsız değişken olarak geri çağırma işlevi veya emitWithAck kullanılır. Odalar sunucu aracılığıyla, ad alanları URL son ekiyle belirlenir. Yeniden bağlanma yerleşiktir. Yaşam döngüsü için React kancasına sarın.
Sıkça Sorulan Sorular
“Socket.io İstemci Entegrasyonu” dersi ücretsiz mi?
Evet — “Socket.io İstemci Entegrasyonu” 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 Frontend Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Frontend Academy kursu toplamda 4 dersten oluşur.
“Socket.io İstemci Entegrasyonu” dersinde ne öğreneceğim?
Socket.io istemcisine bağlanmayı, adlandırılmış olayları dinlemeyi, sunucuya veri göndermeyi, yeniden bağlanma mantığını yönetmeyi ve odaları istemci tarafından düzenlemeyi öğrenin. Frontend Academy 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.
Frontend Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Frontend Academy, 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.
“Socket.io İstemci Entegrasyonu” 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 Frontend Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Frontend Academy 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 API: open, message, close ve error
- Socket.io İstemci Entegrasyonu
- Tek Yönlü Akış için Sunucu Tarafından Gönderilen Olaylar
- Gerçek Zamanlı Arayüz Kalıpları