grpc-web
grpc-web [https://www.fenxianglu.cn/allSearch?category=0&keyword=grpc](https://www.fenxianglu.cn/allSearch?category=0&keyword=grpc)
protoc -I=./ ./domain_result.proto \
--js_out=import_style=commonjs:./ \
--plugin=protoc-gen-grpc=./protoc-gen-grpc-web.exe \
--grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:./
node-grpc
版本
"@grpc/grpc-js": "^1.2.12",
"@grpc/proto-loader": "^0.5.6",
案例代码
/**
* 二级域名探测
*/
const PROTO_PATH = __static + '\\protos\\domain_result.proto'; // 这个需要加载 绝对路径
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
import { message as Message } from "ant-design-vue";
const packageDefinition = protoLoader.loadSync(
PROTO_PATH,
{
keepCase: true,
longs: String,
enums: String,
defaults: true,
oneofs: true
});
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition).request_result;
// 连接grpc
const client = new protoDescriptor.Domain('localhost:9000',
grpc.credentials.createInsecure()
);
// 对外暴漏的方法
export const domain = function (form) {
// service里面方法
client.Domain({
// "Rate": 20,
"Domain": [form.port ],
// "ListNetWork": true,
// "Debug": true,
"DomainLevel": 1,
// "SubNameFileData": "Hello"
}, (err, res) => {
console.log(err);
if (err) {
return Message.error(err.error)
}
if (res.Messages) {
sessionStorage.domain = res.Messages;
}
});
}