Ana içeriğe geç

Yayınlama Olayları

Socket.IO, tüm bağlı istemcilere olay göndermeyi kolaylaştırır.

bilgi

Lütfen, yayınlamanın sunucuya özel bir özellik olduğunu unutmayın.

Tüm bağlı istemcilere

io.emit("hello", "world");
uyarı

Şu anda bağlantısı kesilmiş (veya yeniden bağlanma sürecinde) istemciler olayı alamayacaktır. Bu olayı bir yere (örneğin, bir veritabanında) saklamak sizin kullanım durumunuza bağlıdır.

Gönderen hariç tüm bağlı istemcilere

io.on("connection", (socket) => {
socket.broadcast.emit("hello", "world");
});
not

Yukarıdaki örnekte, socket.emit("hello", "world") ( broadcast bayrağı olmadan) olayı "istemci A"ya gönderecektir. Bir olayı göndermenin tüm yollarının listesini cheatsheet içerisinde bulabilirsiniz.

Onaylarla birlikte

Socket.IO 4.5.0 itibarıyla, artık bir olayı birden fazla istemciye yayınlayabilir ve her birinden bir onay bekleyebilirsiniz:

io.timeout(5000).emit("hello", "world", (err, responses) => {
if (err) {
// bazı istemciler belirtilen sürede olayı onaylamadı
} else {
console.log(responses); // her istemci için bir yanıt
}
});

Tüm yayınlama biçimleri desteklenmektedir:

  • bir odada
io.to("room123").timeout(5000).emit("hello", "world", (err, responses) => {
// ...
});
  • belirli bir socket'tan
socket.broadcast.timeout(5000).emit("hello", "world", (err, responses) => {
// ...
});
  • bir isim alanında
io.of("/the-namespace").timeout(5000).emit("hello", "world", (err, responses) => {
// ...
});

Birden fazla Socket.IO sunucusu ile

Yayınlama, birden fazla Socket.IO sunucusu ile de çalışır. Varsayılan adaptörü Redis Adaptörü veya başka bir uyumlu adaptör ile değiştirmeniz yeterlidir.

Belli durumlarda, yalnızca mevcut sunucuya bağlı istemcilere yayın yapmak isteyebilirsiniz. Bunu local bayrağı ile gerçekleştirebilirsiniz:

io.local.emit("hello", "world");

Yayınlama sırasında belirli istemcileri hedeflemek için lütfen Odalar hakkındaki belgelere bakın.