emit ve on
- Node.js kursu
- İleri seviye
- Ders 45/83
- 5 dk
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
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
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?
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
socket.on("chat", (____) => { console.log("Mesaj"); });
socket.on("chat", (mesaj) => { console.log("Mesaj"); });
Açıklama: callback mesaj parametresini alır.