Ben Yuvası ve Firebase
here etkileşim, ama tek bir istemci üzerinde birden Nest cihazlardan veri almak nasıl biraz daha renk vereceğiz nasıl ilgili benzer bir soru Yanıtım
burada
Firebase Mühendisi, .
users
$userID
devices
$deviceID
// info about devices
Eğer authWithCustomToken()
diyoruz
, uygun
$userID
aşağı yönlendirilirsiniz ve bu kullanıcıların cihazlarında değişikliklere abone olabilirsiniz: gibi görünen bir yapıda kısa Nest depolar verilerde
. Bu, birden fazla kullanıcının cihazlarındaki verilere gerçekten erişemeyeceğiniz anlamına gelir. Yukarı çıkmanın yolu yok (genellikle parent()
'u arayabilirsin, ancak bu, Nest Firebase arazisinde çalışmıyor). Bir Firebase gerçek zamanlı veritabanı bağlantısı conncetion başına tek Yetkilendirme jetonu alır beri kullanmaya devam edeceğiz olarak
, sen bunu auth()
ve unauth()
çevrimdışı gidiyor bu (yapmak için birden çok kez olurdu ve çevrimiçi gerçekten yapmaz Aynı bağlantı) ve ben yüksek bunu yapmaktan kaçınmanızı önerir, çünkü iyi ölçeklenmez. Bunun yerine, her biri kullanıcı belirteciyle doğrulanmış akış REST bağlantıları oluşturmanıza olanak veren streaming REST API'u kullanmalısınız. Bu bağlantılar açık/kapalı olduğunda da kontrol edebilirsiniz. Yönetmek için biraz daha iş var, ama eğer zahmetli bir kontrol için hedefliyorsanız, bu sizin kontrol ettiğiniz seviye. Bazı örnekler here.
Burada daha iyi bir deneyim oluşturmak için Nest ile birlikte çalışıyoruz, ancak şimdilik bu ikisini de tavsiye ediyoruz.
Neden goOffline() 'yararlı değil? Soketi neden ayırmak istediğinizi tam olarak anlamadım. –
@PierreC. Bağlantıyı kesmek istiyorum çünkü kullanıcının sistemi evde veya bekleme modundayken buna ihtiyacım yok. Sokete ihtiyaç duymadığı zaman sunucumuzdaki yükü azaltmak istiyorum. Bağlantıyı kesmek istedim. Kullanıcılarımızın her biri oraya bağlı Nest Account'a bağlı, her kullanıcı için arka uç sunucumuzda ayrı bir soket var. Eğer sistemimizle 10,000 kullanıcı orada bir yuva hesabı bağladıysa, o zaman 10,000 soket bağlantısını korumalıyız, bu da elbette ki iyi bir çözüm değil. –
@PierreC. goOffline() tüm soketlerin bağlantısını kesmek için kullanılır, ancak modunu evden eve veya bekleme moduna değiştirmiş olan kullanıcıya bağlı olarak belirli soketin bağlantısını kesmem gerekir. Kodumda gördüğünüz gibi ikinci bir parametre olarak yeni Firebase.Context() kullandım, bu her kullanıcı için ayrı bağlantı yapmak için kullanılır. –