Örnek uygulamada, iki üye arasındaki mesajlaşma sayfasında, bir üye diğerine mesaj yazarken karşı tarafa “X mesaj yazıyor..” şeklinde anlık durum bilgisi vereceğiz.
Önce Node.js kullanan server tarafınına bakalım;
Client tarafı ise şöyle;
Yukarıdaki örnekte herhangi bir güvenlik önlemi bulunmuyor. Yani isteyen istediği kanala browser’daki konsol yardımıyla abone olabilir. Bu açığı basit bir token yardımıyla çözebilirsiniz:
- Her kullanıcı için unique bir token oluştur
- Kullanıcının mesajlaşma yetkisi olduğu diğer kullanıcı id’lerini bir Redis listesine (
user:76d34d94c2e7fdd50c36585a4e9a7b77:friends
) ekle - Abonelik ve mesaj gönderme işlemlerinde bu token’ını da data’ya ekle
- Node.js tarafında abonelik ve mesaj gönderme işlemi yapmadan önce yetki kontrolü yap
Dikkat edilmesi gereken bir diğer husus da iki üyenin aynı üyeye mesaj yazma durumunda aynı kanala event göndereceklerinden karışıklık meydana gelecektir. Bu nedenle event’ler kullanıcı kanalları yerine, sadece iki üyenin yetkisi olan bir diyalog kanalına gönderilmelidir.