Firebase Получает обновления в реальном времени с документацией Cloud Firestore, в настоящее время указывает, что Go еще не поддерживается.
// Пока не поддерживается в клиентской библиотеке Go
Я хочу слушать изменения в реальном времени в firestore, и мне также разрешено использовать Golang. Поскольку у firestore SDK для golang нет возможности слушать изменения в реальном времени, я решил использовать firestore v1beta1 sdk.
Я написал для этого следующий код
func TestRPCHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
c, err := firestore.NewClient(context.Background())
databaseName := "projects/[project_name]/databases/(default)"
if err != nil {
panic(err)
}
stream, err := client.Listen(context.Background())
if err != nil {
panic(err)
}
request := &firestorepb.ListenRequest{
Database: databaseName,
TargetChange: &firestorepb.ListenRequest_AddTarget{
AddTarget: &firestorepb.Target{
TargetType: &firestorepb.Target_Documents{
Documents: &firestorepb.Target_DocumentsTarget{
Documents: []string{"projects/[project_name]/databases/(default)/[collection_name]"} ,
},
},
},
},
}
if err := stream.Send(request); err != nil {
panic(err)
}
if err := stream.CloseSend(); err != nil {
panic(err)
}
for {
resp, err := stream.Recv()
if err == io.EOF {
break
}
if err != nil {
panic(err)
}
}
}
Когда я это делаю, код не обнаруживает никаких изменений, которые я вызываю вручную в базе данных. stream.Recv()
просто возвращает EOF и немедленно выходит. Я даже пытался вручную ждать, добавляя, time.Sleep()
но это тоже не помогает.
firebase,go,google-cloud-firestore,real-time,rpc,