Yayınlama Olayları
Socket.IO, tüm bağlı istemcilere olay göndermeyi kolaylaştırır.
Lütfen, yayınlamanın sunucuya özel bir özellik olduğunu unutmayın.
Tüm bağlı istemcilere
io.emit("hello", "world");
Ş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");
});
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.