npm install grpc-web

编写拦截器

interceptor.ts

import * as grpcWeb from "grpc-web";//拦截器必须要实现intercept这个接口函数interface Interceptor {    intercept:(request: grpcWeb.Request<any, any>, invoker: (request: grpcWeb.Request<any, any>, metadata?: grpcWeb.Metadata) => grpcWeb.ClientReadableStream<any>)=>void}function AuthInterceptor(token:string):Interceptor {    return {        intercept:(request: grpcWeb.Request<any, any>, invoker: (request: grpcWeb.Request<any, any>, metadata?: grpcWeb.Metadata) => grpcWeb.ClientReadableStream<any>)=>{            //解决一些metadata或者message等等            const metadata = request.getMetadata();            metadata.token=token;                        //这个stream是ClientReadableStream类型,能够应用on、cancel、removeListener接口函数            const stream=invoker(request);            stream.on("status",status => {                console.log(status)            });            return stream        }    }}export {AuthInterceptor}
实现办法参考自grpc.io/blog

应用拦截器

import {AuthInterceptor} from "./interceptor";const token = "123"const authInterceptor = AuthInterceptor(token);const options = {                    unaryInterceptors: [authInterceptor],                    streamInterceptors: [authInterceptor],                }const proxyAddr = "127.0.0.1:1234"const demo = new DemoClient(proxyAddr, null, options);...