# readme
##grpc调试
#im
grpcui -port 20001 -plaintext 192.168.0.3:20011
#base
grpcui -port 20002 -plaintext 192.168.0.3:20014

go get github.com/fullstorydev/grpcui/...
go install github.com/fullstorydev/grpcui/cmd/grpcui


## 生成服务

执行gen.bat 重新生成服务文件

### 安装依赖

cnpm i google-protobuf   
cnpm install --save grpc-web

### 使用

#### 单页引用

import {SignInPasswordRequest, FlushDataRequest, Data} from "@/assets/grpcBack/im_pb"; //｛｝内容为传入参数的方法名，按实际需求添加

import {ApiClient} from "@/assets/grpcBack/im_grpc_web_pb"; // 固定内容无需修改

[comment]: <> (function)
let that = this; //端口地址 

this.client = new ApiClient("http://192.168.0.3:20010", null, null);

// 报文内容和方法，方法取自im.proto文件 rpc rpc 
SignInUserCode (SignInPasswordRequest) returns (TokenParam)  {}

let pwdtext = "asdf*123"
let authtext = "admin"
let getRequest = new SignInPasswordRequest();

// 对报文内容字符串进行编码 ，setXXX方法取自im.proto文件 message SignInPasswordRequest { ... ，内部属性要加set前缀字

getRequest.setPassword(pwdtext); getRequest.setAuth(authtext); getRequest.setExpirationsec(10000);

//接口名取自im.proto文件 rpc rpc SignInUserCode (SignInPasswordRequest) returns (TokenParam)  {}

let res = this.client.signInUserCode(getRequest, {}, (err, response) => { //回调方法名取自im.proto文件 rpc SignInUserCode (
SignInPasswordRequest) returns (TokenParam)  {} 的TokenParam返回值， //内部属性要加get前缀字

this.message = response.getToken(); });

//****注意，加前缀子的编码方法和回调方法的大小写请逐一在im_grpc_web_pb.js文件中核对，转换规则一般是小驼峰书写。

#### 全局使用

main.js 里 
import {ApiClient} from "../src/grpc/im_grpc_web_pb"; 
// 建立grpc连接服务 
let client = new ApiClient("http://192.168.0.3:20010", null, null); 
// 挂载为全局方法 
Vue.prototype.client = client;

目标vue页面 里 按需引入 
import {SignInPasswordRequest} from "@/grpc/im_pb";

...

methods: { 
grpcServe(){ 
    let that = this; 
    let getRequest = new SignInPasswordRequest(); 
    getRequest.setPassword("asdf*123"); 
    getRequest.setAuth("admin"); 
    getRequest.setExpirationsec(10000);
    that.client.signInUserCode(getRequest, {},
        (err,response) => { 
            that.TodayCalcValues = response.getToken(); 
            }); 
},
//TodayCalcValues为显示容器

import {
StandardRequest
} from "@/grpc/base_pb";

//含参数调用过程
const jsonStr = {
shopId: localStorage.shopId,
vipType: -99,
start: that.start,
tableMax: that.pageination.pageItem
};

let paraRequest = new StandardRequest();
paraRequest.setShopid(localStorage.shopId);
paraRequest.setJsonstr(JSON.stringify(jsonStr));
paraRequest.setSign(getSignStr(jsonStr));
console.log(paraRequest);
that.client.TODO(paraRequest, {"Token": localStorage.token}, (err, StandardReply) => {
    if (err == null) {
        console.log(StandardReply.getJsonrst());
        let res = JSON.parse(StandardReply);
        if (res.code === 0) {
            if(res.rs){
                //TODO
            }else{
                //TODO
                }
        } else {
            that.$message.error(res.memo + ',错误代码：' + res.code);
            }
        } else {
          let res = err;
          that.$message.error(res.message + ',错误代码：' + res.code);
          console.log(res);
        }
      });