Böyle 1: 1 sohbet odalarını işlemenin yaygın bir yolu, kullanıcı kimliklerini temel alan kullanıcı kimliklerini oluşturmaktır. Daha önce de belirttiğiniz gibi, bununla ilgili bir sorun da, kullanıcının sohbeti başlatabilmesi ve her iki durumda da aynı odada kalmalarıdır.
Bunu, kullanıcı kimliklerini bileşik anahtarda sözcüksel olarak sıralayarak siparişi çözebilirsiniz. yerine kimlikleri kullanıcı adları ile Örnek:
Ortak bir izleme soruların
var user1 = "Frank";
var user2 = "Eusthace";
var roomName = 'chat_'+(user1<user2 ? user1+'_'+user2 : user2+'_'+user1);
console.log(user1+', '+user2+' => '+ roomName);
user1 = "Eusthace";
user2 = "Frank";
var roomName = 'chat_'+(user1<user2 ? user1+'_'+user2 : user2+'_'+user1);
console.log(user1+', '+user2+' => '+ roomName);
<script src="https://getfirebug.com/firebug-lite-debug.js"></script>
Mevcut kullanıcı için sohbet odaları listesini göstermek için nasıl gibi görünüyor. Yukarıdaki kod buna hitap etmiyor. NoSQL veritabanlarında yaygın olduğu gibi, bu kullanım durumlarına izin vermek için veri modelinizi büyütmeniz gerekir. Mevcut kullanıcı için sohbet odalarının bir listesini göstermek isterseniz, verilerinizi buna izin vermek için modellemelisiniz. Bunu yapmanın en kolay yolu, veri modeline her kullanıcı için sohbet odaları listesini eklemektir:
"userChatrooms" : {
"Frank" : {
"Eusthace_Frank": true
},
"Eusthace" : {
"Eusthace_Frank": true
}
}
Bu eski olduğunu biliyorum, ama sadece bazı fikirler arıyordum. Kullanıcıları bir dizide oluşturarak ve sıralayarak bunu esnek hale getirebilirsiniz. Daha sonra, sadece kullanım kolaylığı sağlamak ve diğerlerinin oda isimlerini kolayca tahmin etmesini önlemek için, sadece bir MD5'i çıkarın ya da bir şekilde onu karıştırın. Bu sayede bir odadaki kullanıcı sayısını arttırabilirsiniz. Bunu bir süredir kullanıyorum ve oldukça hoş. – Eduard
Puanlarınız için teşekkür ederiz. Js-sha256 modülü ile hash benim için çalıştı. 'let chatHash = SHA256 (' agent: '+ agentId +' _user: '+ userId)' –
Bu mükemmel bir cevap teşekkür ederim. Ancak bu sohbet odası adının benzersiz olduğundan nasıl emin olacağınızı merak ediyorum. Özellikle daha yaygın isimler için. Sohbeti iki kullanıcı düğümünde saklasam bile 2 Frank ile sohbet edebilirim. Şu anda sadece sohbet için FB anahtarını kullanmayı düşünüyorum, her kullanıcı/konuşması ile bir kullanıcı için bir kayıt saklıyoruz: KullanıcıAdı: alıcısı ve kullanıcılardan biri bir sohbet başlattığında sadece bir tane olmadığından emin olmak için kontrol ediyor diğer kullanıcı ile var. Buna rağmen en iyi tasarım olmayabilir. Düşüncesi olan var mı? Teşekkürler! –