grpc-web

grpc-web [https://www.fenxianglu.cn/allSearch?category=0&keyword=grpc](https://www.fenxianglu.cn/allSearch?category=0&keyword=grpc)

  1. protoc -I=./ ./domain_result.proto \
  2. --js_out=import_style=commonjs:./ \
  3. --plugin=protoc-gen-grpc=./protoc-gen-grpc-web.exe \
  4. --grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:./

node-grpc

版本

  1. "@grpc/grpc-js": "^1.2.12",
  2. "@grpc/proto-loader": "^0.5.6",

案例代码

  1. /**
  2. * 二级域名探测
  3. */
  4. const PROTO_PATH = __static + '\\protos\\domain_result.proto'; // 这个需要加载 绝对路径
  5. const grpc = require('@grpc/grpc-js');
  6. const protoLoader = require('@grpc/proto-loader');
  7. import { message as Message } from "ant-design-vue";
  8. const packageDefinition = protoLoader.loadSync(
  9. PROTO_PATH,
  10. {
  11. keepCase: true,
  12. longs: String,
  13. enums: String,
  14. defaults: true,
  15. oneofs: true
  16. });
  17. const protoDescriptor = grpc.loadPackageDefinition(packageDefinition).request_result;
  18. // 连接grpc
  19. const client = new protoDescriptor.Domain('localhost:9000',
  20. grpc.credentials.createInsecure()
  21. );
  22. // 对外暴漏的方法
  23. export const domain = function (form) {
  24. // service里面方法
  25. client.Domain({
  26. // "Rate": 20,
  27. "Domain": [form.port ],
  28. // "ListNetWork": true,
  29. // "Debug": true,
  30. "DomainLevel": 1,
  31. // "SubNameFileData": "Hello"
  32. }, (err, res) => {
  33. console.log(err);
  34. if (err) {
  35. return Message.error(err.error)
  36. }
  37. if (res.Messages) {
  38. sessionStorage.domain = res.Messages;
  39. }
  40. });
  41. }