fireflo.proto y la biblioteca gRPC
estándar de su lenguaje. Sustituya sms.example.com:8090 por la dirección que le dé su proveedor, y
mantenga la contraseña fuera de su código: los ejemplos la leen de SMS_PASSWORD.
Los ejemplos se conectan sin TLS (
-plaintext, un canal inseguro), como lo haría con una pasarela en
una red privada. Si su proveedor le da una dirección TLS (a menudo el puerto 443), use en su lugar un
canal seguro; cada sección muestra el cambio de una línea.grpcurl
Gracias a la reflexión del servidor,grpcurl no necesita ningún archivo proto. Si su proveedor ha
desactivado la reflexión, añada -proto fireflo.proto a cada comando.
-plaintext. Un rechazo imprime el código y el mensaje gRPC; añada -v para ver los
trailers, incluido el detalle del error.
Python (grpcio)
Genere los stubs una vez:Login, el envoltorio de nuevo inicio de sesión y Send
SendStream
Acuses: Pull, o Subscribe
Subscribe que termina con SESSION_EXPIRED o UNAVAILABLE se reabre tras un Login nuevo; lo
que no había confirmado se entrega de nuevo.
Java (grpc-java)
Genere con el plugin de protobuf para Gradle o Maven y el pluginprotoc-gen-grpc-java; las clases
quedan en el paquete fireflo.v1. Necesita grpc-netty-shaded (u otro transporte), grpc-protobuf y
grpc-stub.
Login, el envoltorio de nuevo inicio de sesión y Send
StatusRuntimeException de sendOne, lea errorDetail(e): para OUTCOME_UNKNOWN,
reintente solo con el mismo clientRef; cuando d.hasRetryAfterSeconds(), espere ese tiempo y
reintente; en otro caso, corrija la petición.
SendStream
onNext se ejecuta en los propios hilos de gRPC, así que los resultados se leen mientras usted
escribe. Para un lote muy grande, compruebe isReady() en un ClientCallStreamObserver (o use
ClientResponseObserver) antes de cada escritura, para que su proceso no acumule en búfer lo que la
pasarela aún no está leyendo.
Acuses con Pull
Go (grpc-go)
Genere conprotoc --go_out=. --go-grpc_out=. fireflo.proto (plugins protoc-gen-go y
protoc-gen-go-grpc). El nombre del paquete es fireflov1; la ruta de importación depende de su
módulo y de los ajustes de --go_opt.
Login, el envoltorio de nuevo inicio de sesión y Send
proto.String, proto.Bool y
proto.Int32, y léalos con los métodos Get… generados.
Acuses con Subscribe
Relacionado
Errores y códigos de estado
Qué significa cada rechazo, y cuáles reintentar.
El archivo proto
El contrato a partir del cual se generan estos ejemplos.