crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
1. WebSockets vs. HTTP
Geleneksel HTTP bağlantılarında, sunucu size sadece siz bir şey istediğinizde cevap verebilir. WebSocket protokolü ise bir kez el sıkışma (handshake) yaptıktan sonra bağlantıyı açık tutar. Sunucu, kullanıcıdan istek gelmesini beklemeden veri gönderebilir (Push). Socket.io, WebSockets üzerine kurulmuş, bağlantı kopsa bile otomatik tekrar bağlanan ve kullanımı çok daha kolay olan bir kütüphanedir.
2. Sunucu Tarafı (Server-Side) Kurulumu
Socket.io hem sunucuda hem de istemcide çalışan iki parçadan oluşur. Önce Node.js tarafında Express ile birlikte kuralım:
Bash:
npm install express socket.io
JavaScript:
const express = require('express');
const http = require('http');
const { Server } = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = new Server(server); // Socket.io'yu HTTP sunucusuna bağlıyoruz
io.on('connection', (socket) => {
console.log('Bir kullanıcı bağlandı: ' + socket.id);
// Bir mesaj geldiğinde yakala
socket.on('mesaj_gonder', (data) => {
// Bu mesajı bağlı olan HERKESE yay (broadcast)
io.emit('mesaj_al', data);
});
socket.on('disconnect', () => {
console.log('Kullanıcı ayrıldı.');
});
});
server.listen(3000, () => console.log('3000 portunda chat başladı!'));
3. İstemci Tarafı (Client-Side) Kurulumu
Frontend kısmında, sunucuya bağlanmak ve mesajları dinlemek oldukça basittir:
HTML:
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io(); // Sunucuya bağlan
function mesajGonder() {
const mesaj = document.getElementById('input').value;
socket.emit('mesaj_gonder', { metin: mesaj, kullanici: 'Can' });
}
// Sunucudan gelen mesajları dinle
socket.on('mesaj_al', (data) => {
const liste = document.getElementById('mesajlar');
const eleman = document.createElement('li');
eleman.textContent = `${data.kullanici}: ${data.metin}`;
liste.appendChild(eleman);
});
</script>
4. Olaylar (Events) ve Odalar (Rooms)
Socket.io'nun en büyük gücü, verileri gruplandırabilmesidir:
[]emit: Mesaj gönderir.
[]on: Gelen mesajı dinler.
[]broadcast.emit: Mesajı gönderen kişi hariç herkese gönderir.
[]join/leave: Kullanıcıları "Odalar"a (örn: 'Oyun-1' odası) ayırarak sadece o gruptakilerin mesajlaşmasını sağlar.
JavaScript:
// Özel odaya katılma örneği
socket.join('yazilim-odasi');
io.to('yazilim-odasi').emit('duyuru', 'Yazılımcılar buraya!');
5. Socket.io'nun Avantajları
| Özellik | Açıklama |
|---|---|
| Otomatik Yeniden Bağlanma | İnternet kopsa bile bağlantı geldiği an kaldığı yerden devam eder. |
| Binary Desteği | Sadece metin değil, resim ve dosya transferi de yapılabilir. |
| Fallback | Tarayıcı WebSocket desteklemiyorsa otomatik olarak "polling" moduna geçer. |
Sonuç
Socket.io, web uygulamalarına "canlılık" katan teknolojidir. Artık kullanıcılarınızın sayfayı yenilemesini beklemenize gerek yok. Sohbet uygulamalarından, ortak çalışma araçlarına (Google Docs gibi) kadar her türlü interaktif projede Socket.io sizin en yakın dostunuzdur.