2016-04-12 20 views
0

Yuva Kamerası'ndan hareket algılama olayları almak için NodeJs'te bir firebase kullanıyorum.FireBase soketleri nasıl çıkarılır?

Her yuva kullanıcısı için birden fazla soket bağlantısına ihtiyacım olduğu için aşağıdaki kodu kullanarak bağlanıyorum.

this.context = new Firebase.Context(); 
this.firebaseClient = new Firebase(config.nest.firebaseSocketUrl, this.context); 

Bir kullanıcı bekleme veya ev onun modu her değiştirdiğinde özel bir soket bağlantısını kesmek istiyor.

Firebase belgelerine göre, benim durumumda yararlı olmayan Firebase.goOffline()'u kullanabilirsiniz. Belirli bir firebase soketini nasıl ayırabilirim?

+0

Neden goOffline() 'yararlı değil? Soketi neden ayırmak istediğinizi tam olarak anlamadım. –

+0

@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. –

+0

@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. –

cevap

0
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.

+0

Soket bağlantısını kesmem gerekirse, REST API'leri yerine soket kullanmak daha mı iyi olur? REST API çözümü, daha sonra soketler daha iyi mi? Firebase'in bir seferde bağlanması için kaç soket bağlantısına izin verilir?Kaç tane dinlenme API bağlantısı yapılabilir? Açık bağlantı sayısı üzerinde herhangi bir sınır var mı, yok mu? –

+0

Tek bir işlemde birden çok kullanıcının kimliğini doğrulamanız gerekmiyorsa (kimliği doğrulanmamış veya tek kullanıcı), Düğüm istemcimizi kullanarak sorun yoktur. Birden çok kullanıcının kimliğini doğrulamanız gerekiyorsa, kimliği doğrulanmış bir kullanıcı için tek bir işlem oluşturmanız veya yalnızca bir "? Auth = " sorgu parametresini alan REST'i kullanmanız gerekir. Soket bağlantıları ve REST bağlantıları, herhangi bir zamanda milyonlarca açık soketi ele aldığımızdan, bizimkinden ziyade sizin tarafınızda sınırlamalar olacaktır. –