Проверяет знание gRPC и понимание, когда нужен потоковый режим.
Unary RPC — клиент делает один запрос и получает один ответ. Bidirectional streaming — обе стороны могут отправлять данные параллельно, пока соединение открыто. Применяется для чатов, realtime-обновлений и IoT.
Unary RPC:
Запрос → Ответ.
Простая модель, похожа на HTTP.
Bidirectional stream:
У клиента и сервера есть потоки.
Отправка и получение происходят независимо.
Соединение поддерживается открытым.
Чат — клиент отправляет сообщения и параллельно получает новые.
Трекер геопозиции — клиент стримит координаты, сервер отвечает командами.
stream, _ := client.Chat(ctx)
go func() {
for {
msg, _ := stream.Recv()
fmt.Println("Server:", msg)
}
}()
stream.Send(&Message{Text: "Привет"})Вывод: Unary RPC — для простых запросов, bidi-stream — для realtime и асинхронного общения.