Contenido del curso
gRPC
- 6

gRPC: qué lo hace más rápido que REST
08:35 min - 7

JSON vs Protobuf: cuándo usar cada uno
08:56 min - 8

Definir un StudentService con proto buffers en Go
04:27 min - 9

Implementación de Repositorios y gRPC en Go con PostgreSQL
11:59 min - 10

Criando o primeiro servidor gRPC em Go
12:50 min - 11

Prueba tu servidor gRPC con Postman
04:08 min - 12

Definiendo el servicio de test en gRPC
03:38 min - 13

Implementando servidor gRPC con PostgreSQL en Go
17:45 min - 14

Client streaming en gRPC con Go
16:53 min - 15

Implementación de Streaming del Servidor con gRPC y Protobufs
16:25 min - 16

Streaming del servidor con gRPC en Go
16:23 min - 17

Streaming bidireccional en gRPC con Go
16:04 min - 18

Prueba de streaming bidireccional con gRPC
Viendo ahora - 19

Implementando un cliente gRPC en Go
13:10 min - 20

Streaming bidireccional en gRPC con Go
12:16 min
Conclusión
Prueba de streaming bidireccional con gRPC
Resumen
Probar un streaming bidireccional en gRPC requiere ver en acción cómo cliente y servidor intercambian mensajes en tiempo real. Con Postman y un servidor en Go puedes validar este flujo, inspeccionar las respuestas y entender cómo se sostiene la conexión en ambos sentidos.
¿Cómo levantar el servidor gRPC y conectarlo a Postman?
Antes de probar cualquier RPC necesitas tener corriendo el servidor y configurar la herramienta cliente. El proceso es directo si ya tienes el código implementado de clases anteriores.
Para arrancar, ejecuta el servidor con go run servertest/main.go y abre Postman en una pestaña nueva con tipo gRPC. Apunta la conexión a localhost:5070 y activa la reflection del servidor para que Postman cargue automáticamente los métodos disponibles.
¿Qué es la server reflection en gRPC? Es una capacidad que permite a un cliente descubrir los métodos y mensajes que expone un servidor sin necesidad de tener los archivos
.protolocalmente. Postman la usa para autocompletar las llamadas.
¿Cómo cargar preguntas con un streaming del lado del cliente?
El test con ID T1 ya existe en base de datos, pero no tiene preguntas asociadas. Aquí entra en juego el RPC SetQuestions, que es un client streaming: el cliente envía varios mensajes y el servidor responde una sola vez al final.
Los pasos para poblar el test son:
- Invocar
SetQuestionsdesde Postman. - Enviar un primer mensaje con
testID = T1eID = A1T1. - Enviar un segundo mensaje con
ID = A2T1. - Enviar el tercero con
ID = A3T1. - Cerrar el stream con end streaming y recibir el
OKdel servidor.
Con esa secuencia quedan registradas tres preguntas asociadas al test T1, listas para ser consumidas por el siguiente RPC.
¿Cómo funciona Take Test en streaming bidireccional?
El método TakeTest es donde se aprecia realmente la comunicación en ambos sentidos. El servidor envía una pregunta, el cliente responde, y así sucesivamente hasta agotar el cuestionario.
Al invocar TakeTest, Postman recibe inmediatamente la primera pregunta A1T1. Tú generas un mensaje de respuesta, en el ejemplo con el valor 42, y al enviarlo aparece al instante la siguiente pregunta A2T1. Repites el ciclo con A3T1 y al responder la última, la conexión queda esperando. Ahí es cuando cierras manualmente con end streaming.
Esa interacción continua, sin abrir y cerrar conexiones por cada mensaje, es justo lo que diferencia al bidirectional streaming de un RPC tradicional unario.
¿Qué es un streaming bidireccional en gRPC? Es un tipo de RPC donde cliente y servidor mantienen un único canal abierto y se envían mensajes de forma independiente y simultánea, sin esperar turnos estrictos.
¿Dónde se ven las respuestas que envía el cliente?
En la consola del servidor aparecen impresas las respuestas recibidas. Esa impresión ocurre en la línea 156 del código, donde se hace la lectura del mensaje entrante dentro del loop de streaming. Es la prueba tangible de que el servidor está consumiendo en tiempo real lo que el cliente envía.
¿Qué reto puedes implementar para profundizar?
Imprimir las respuestas en consola sirve para validar el flujo, pero queda corto para una aplicación real. Por eso vale la pena llevar el ejercicio un paso más allá.
La propuesta es doble:
- Almacenar las respuestas del usuario en la base de datos en lugar de solo imprimirlas.
- Crear un nuevo RPC que devuelva la calificación final obtenida en un test específico, consultando esas respuestas guardadas.
Con esa mejora, el sistema deja de ser una demo y se convierte en algo funcional: un motor de evaluaciones con persistencia y scoring.
¿Qué capacidades habilita el streaming bidireccional?
Lo importante de esta prueba no es solo que funcionó, sino lo que abre. Tener un canal donde ambos lados pueden empujar datos en cualquier momento permite resolver problemas que un request-response simple no cubre bien: chats en vivo, notificaciones, juegos por turnos, evaluaciones interactivas o sincronización de estado entre dispositivos.
Ya viste cómo se comporta el servidor. En la siguiente clase toca el otro lado del puente: cómo se arma un cliente gRPC en código, cómo se construyen los requests y cómo se maneja el streaming desde la perspectiva del consumidor, replicando lo que Postman hace por debajo.
¿Te animas a implementar el reto de calificación? Cuéntame cómo lo resolverías en los comentarios.