CodeBlanks Logo Icon CodeBlanks

emit ve on

socket.emit ve socket.on ile olay öğrenirsin.

socket.emit ve socket.on

socket.emit(olay, veri) istemciye bir olay gönderir. socket.on(olay, callback) istemciden gelen olayları dinler. Bu iki metot Socket.io'nun temel taşıdır.

Örnek: socket.emit("merhaba", { ad: "Ayşe" }); istemciye merhaba olayını { ad: "Ayşe" } verisiyle gönderir. socket.on("mesaj", (veri) => console.log(veri)); ise istemciden gelen mesaj olayını dinler. emit gönderir, on dinler. Olay adları serbesttir; istemci ve sunucu aynı adı kullanmalıdır. Veri ikinci parametre olarak gönderilir; nesne, dizi veya ilkel tür olabilir.

Mesaj alışverişi

Gerçek bir sohbet akışı şöyledir: istemci socket.emit("chat", mesaj) ile mesaj gönderir; sunucu socket.on("chat", ...) ile dinler. Sunucu mesajı tüm istemcilere io.emit("chat", mesaj) ile geri yayar.

Örnek: socket.on("chat", (mesaj) => { io.emit("chat", mesaj); });. Burada io.emit tüm istemcilere gönderir; socket.emit yalnızca tek istemciye. Aradaki fark önemlidir: özel yanıtı tek istemciye, genel yayını herkese yaparsın. Olay adı (chat) her iki tarafta da aynı olmalıdır; yoksa mesaj alınmaz.

Uygulama chat handler'ı tanımla

Aşağıdaki io nesnesini kullan. io.on("connection", (socket) => { socket.on("chat", (mesaj) => { console.log("Gelen: " + mesaj); }); }) ile chat dinleyici tanımla. console.log ile "emit/on hazır" yaz.

Başlangıç kodu

index.js
const socketIo = require("socket.io");
const io = socketIo();

// io.on içinde chat dinleyicisi tanımla
// buraya yaz

// "emit/on hazır" yazdır
// buraya yaz

Örnek çözüm

index.js
const socketIo = require("socket.io");
const io = socketIo();
io.on("connection", (socket) => {
  socket.on("chat", (mesaj) => { console.log("Gelen: " + mesaj); });
});
console.log("emit/on hazır");

Beklenen çıktı

emit/on hazır

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Metodu rolüne eşle

Kavram Anlamı
socket.emit İstemciye gönderir
socket.on İstemciden dinler
olay adı İletişim kanalı
veri Gönderilen yük

2 Hangisi tek bir istemciye mesaj gönderir?

index.js
socket.emit("mesaj", veri)
  • io.send(veri)
  • socket.broadcast.emit("mesaj", veri)
  • socket.emit("mesaj", veri) Doğru cevap
  • io.emit("mesaj", veri)

Açıklama: socket.emit tek istemciye gönderir.

3 socket.on çağrısını tamamla

Soru
socket.on("chat", (____) => { console.log("Mesaj"); });
Cevap
socket.on("chat", (mesaj) => { console.log("Mesaj"); });

Açıklama: callback mesaj parametresini alır.

İleri seviye bölümündeki tüm dersler