Message
- Node.js kursu
- İleri seviye
- Ders 40/83
- 5 dk
ws.send ve ws.on('message') ile mesajlaşmayı öğrenirsin.
Message olayı
Bir istemciden mesaj geldiğinde "message" olayı tetiklenir. ws.on("message", (data) => { ... }) ile yakalarsın. data bir Buffer'dır; dize olarak kullanmak için data.toString() çağırırsın.
Mesajlar dize veya ikili olabilir. JSON mesajları yaygındır: istemci ws.send(JSON.stringify({ type: "chat", text: "merhaba" })) gönderir, sunucu JSON.parse(data.toString()) ile ayrıştırır. Bu, yapılandırılmış iletişim sağlar. Mesaj işleyicide hata yakalamak iyi bir alışkanlıktır; hatalı JSON çökertmesin.
ws.send ile mesaj gönderme
İstemciye mesaj göndermek: ws.send(data). data dize, Buffer veya nesne olabilir. Nesne için ws.send(JSON.stringify(obj)) kullanırsın.
Bir mesajı tüm istemcilere göndermek (broadcast) için wss.clients üzerinde dönersin. wss.clients bir Set'tir; her öğe bir ws bağlantısıdır. clients.forEach((client) => client.send(msg)) ile herkese gönderirsin. Bu, sohbet broadcast'inin temelidir.
Uygulama message işleyicisini kaydet
Bir EventEmitter oluştur. "message" olayını bir işleyici ile dinle. En son "message hazır" yaz.
Başlangıç kodu
// EventEmitter'ı içe aktar, oluştur
// message olayını dinle
// "message hazır" yazÖrnek çözüm
const { EventEmitter } = require("events");
const ws = new EventEmitter();
ws.on("message", (data) => {});
console.log("message hazır");Beklenen çıktı
message hazır
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 message olayının işleyicisi hangi parametre alır?
- port
- css
- sql
- data (Buffer) Doğru cevap
Açıklama: İşleyici data adında bir Buffer alır.
2 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
ws.on("message") |
Mesaj dinler |
ws.send |
Mesaj gönderir |
data.toString() |
Dizeye çevirir |
JSON.parse |
Ayrıştırır |
3 Olay adını tamamla
ws.on("____", (data) => { console.log(data.toString()); })
ws.on("message", (data) => { console.log(data.toString()); })
Açıklama: message olayı istemciden mesaj gelince tetiklenir.