0

I was trying to add gRPC to a react-native project. I use envoy which is listening on port 8080 to proxy requests to the node server running on port 4000. However, I get this error message “Http response at 400 or 500 level”. I use the same envoy.yaml config for another React project and it works perfectly. What’s wrong with my configuration here? Can anyone help plz?

envoy.yaml

static_resources:
  listeners:
    - name: listener_0
      address:
        socket_address: { address: 0.0.0.0, port_value: 8080 }
      filter_chains:
        - filters:
            - name: envoy.filters.network.http_connection_manager
              typed_config:
                '@type': type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
                codec_type: auto
                stat_prefix: ingress_http
                route_config:
                  name: local_route
                  virtual_hosts:
                    - name: local_service
                      domains: ['*']
                      routes:
                        - match: { prefix: '/' }
                          route:
                            cluster: piement_service
                            timeout: 0s
                            max_stream_duration:
                              grpc_timeout_header_max: 0s
                      cors:
                        allow_origin_string_match:
                          - prefix: '*'
                        allow_methods: GET, PUT, DELETE, POST, OPTIONS
                        allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout
                        max_age: '1728000'
                        expose_headers: custom-header-1,grpc-status,grpc-message
                http_filters:
                  - name: envoy.filters.http.grpc_web
                    typed_config:
                      '@type': type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
                  - name: envoy.filters.http.cors
                    typed_config:
                      '@type': type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
                  - name: envoy.filters.http.router
                    typed_config:
                      '@type': type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
  clusters:
    - name: piement_service
      connect_timeout: 0.25s
      type: logical_dns
      http2_protocol_options: {}
      lb_policy: round_robin
      load_assignment:
        cluster_name: piement_service
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: 0.0.0.0
                      port_value: 4000

server.js

const path = require("path");
require("dotenv").config({
  path: path.resolve(__dirname, ".env"),
});
const express = require("express");
const app = express();
const port = 4000;

const { signIn, signUp, forgetPassword } = require("./controller/authHandler");

const grpc = require("grpc");
const protoLoader = require("@grpc/proto-loader");

app.use(express.static("public"));
app.use(express.json());

const AUTH_PROTO_PATH = __dirname + "/proto/auth.proto";

const SERVER_URI = "0.0.0.0:8080";

const packageDefinition = protoLoader.loadSync(AUTH_PROTO_PATH);
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);

const server = new grpc.Server();

server.addService(protoDescriptor.AuthService.service, {
  signIn,
  signUp,
  forgetPassword,
});

server.bind(SERVER_URI, grpc.ServerCredentials.createInsecure());
console.log(server);
server.start();

app.listen(port, () => console.log(`Node server listening on port ${port}!`));

1 Answers1

0

grpc team member here :)

Are you seeing this issue on Android? The behavior you describe resembles what's mentioned in this Github issue: https://github.com/grpc/grpc-web/issues/383

Maybe you could chime in with some details you see. Thanks :)

Sampajano
  • 835
  • 9
  • 7