У меня есть сервер GRPC, который предоставляет функцию и возвращает поток. Я хочу сохранить поток на map[string]grpc.Stream
- пока это работает.
Моя проблема в том, что поток закрывается после того, как функция, возвращающая поток, завершает свою логику.
Это то, что у меня есть на данный момент:
func (s *server) CheckConnection(initMessage *LighterGRPC.InitMessage, stream LighterGRPC.Lighter_CheckConnectionServer) error {
//Do something magic
streams[initMessage.DeviceID] = stream
error := stream.Send(&LighterGRPC.ColorMessage{DATA})
if error {
log.Println(error)
}
//Tried
//for { }
return error
}
Я уже пытался разрешить функции никогда ничего не возвращать с for {}
перед возвратом (как прокомментировано в коде выше), но это не помогло, и я не думаю, что это могло быть решением.
Есть ли способ оставить поток открытым, чтобы я мог позже отправлять данные клиенту во время выполнения?