İlk kez Firebase ile prototipleme yaparken, güncelleme olaylarını akışa almak için bir SSEClient API'si olan Python'u kullandım. Ve beklediğim gibi çalıştı; Ben tüm belge abone ve sadece/v_42/LASTUPDATE burada güncellenen, ben gibi bir SSE olay alacağı ise: Firebase Java Event API dönüş olaylarını SSE API'sı gibi nasıl yapabilirim?
{ "event": "put",
"data" :{"path":"/v_42/lastUpdate","data":{"timestamp":9052758}}}
Java API kullanarak bir güncelleme belirli bir yolunu almanın bir yolu var mı ? Bulabileceğim yakın şey
firebase.addChildEventListener(new ChildEventListener() {
public void onChildChanged(DataSnapshot snapshot, String previousChildKey) { ... }
... ama snapshot.getKey() yalnızca üst düzey anahtarı (yani "v_42" değil tüm değişim yolu döndürür.
Yanıt için teşekkürler! Ama bunu denediğimde, sadece "/ v_42" değil "/ v_42/lastUpdate". ReST API'sini kullanmadan ikincisini geri almanın bir yolu var mı? Java API ile değiştirilen ağacın gerçek kısmını nasıl algılayabilirim? Ekstra bağımlılıklar ve ek yük nedeniyle gerekmediysem ReST kullanmamayı tercih ederim. – RMHarris157
Bu, dinleyiciyi nereye taktığınıza bağlıdır. Bir çocuk dinleyici kullandığınızdan, ana düğümün seviyesini hala özlüyor olabilirsiniz. Ancak aynı REST API'sini kullanmak istemiyorsanız, diğer mantığı değiştirmek için de zaman ayırmalısınız. Yolu yeniden yapılandırması gereken geliştiricileri gördüğüm pek çok vaka yok. Bunu yapmak mümkün olsa da, birkaç adım geri çekerseniz daha iyi çözümler vardır (bkz. [XY problemi] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)) –
Bunun tipik kullanım durumu olmadığından emin olabilirim - Firebase'i bir mobil kullanıcı arabirimi tarafından güncellenecek bir belge modeli koleksiyonu tutmak için kullanıyorum, ancak alt arabirim nedeniyle, yalnızca değişiklikleri gönderebilirim bir öznitelikteki modele (tam belge yardımcısı) seri komut olarak. UI, belgeye güncellenmiş özniteliği almayı umduğum FB'ye tek bir öznitelik güncellemesi uygular, bu da daha sonra yeniden serileştirilip alt sisteme iletilebilir. – RMHarris157