fireflo.proto e a biblioteca gRPC padrão
da sua linguagem. Troque sms.example.com:8090 pelo endereço que seu provedor te passar, e mantenha a
senha fora do seu código — os exemplos a leem de SMS_PASSWORD.
Os exemplos conectam sem TLS (
-plaintext, um canal inseguro), como você faria com um gateway numa
rede privada. Se seu provedor te passar um endereço TLS — muitas vezes na porta 443 — use um canal
seguro; cada seção mostra a mudança de uma linha.grpcurl
Com a server reflection, ogrpcurl não precisa de arquivo proto. Se seu provedor desligou a
reflection, adicione -proto fireflo.proto a cada comando.
-plaintext. Uma recusa imprime o código e a mensagem gRPC; adicione -v para ver os
trailers, incluindo o detalhe do erro.
Python (grpcio)
Gere os stubs uma vez:Login, o wrapper de re-login e Send
SendStream
Recibos: Pull, ou Subscribe
Subscribe que termina com SESSION_EXPIRED ou UNAVAILABLE é reaberto depois de um Login novo; o
que você não tinha confirmado é entregue de novo.
Java (grpc-java)
Gere com o plugin protobuf do Gradle ou do Maven e o pluginprotoc-gen-grpc-java; as classes ficam no
pacote fireflo.v1. Você precisa de grpc-netty-shaded (ou outro transporte), grpc-protobuf e
grpc-stub.
Login, o wrapper de re-login e Send
StatusRuntimeException vinda de sendOne, leia errorDetail(e): em OUTCOME_UNKNOWN repita só
com o mesmo clientRef; quando d.hasRetryAfterSeconds(), espere esse tempo e repita; caso contrário,
corrija a requisição.
SendStream
onNext roda nas threads do próprio gRPC, então os resultados são lidos enquanto você escreve. Para um
lote muito grande, verifique isReady() num ClientCallStreamObserver (ou use
ClientResponseObserver) antes de cada escrita, para que seu processo não acumule em buffer o que o
gateway ainda não está lendo.
Recibos com Pull
Go (grpc-go)
Gere comprotoc --go_out=. --go-grpc_out=. fireflo.proto (plugins protoc-gen-go e
protoc-gen-go-grpc). O nome do pacote é fireflov1; o caminho de import depende do seu módulo e das
configurações de --go_opt.
Login, o wrapper de re-login e Send
proto.String, proto.Bool e
proto.Int32, e leia-os com os métodos Get… gerados.
Recibos com Subscribe
Relacionados
Erros e códigos de status
O que cada recusa significa, e quais repetir.
O arquivo proto
O contrato a partir do qual estes exemplos são gerados.