codecamp

Kitex Server SDK化

Server SDK化

SDK化(invoker)允许用户将 Kitex server 当作一个本地 SDK 调用。

调用通过 ​message ​完成,初始化 ​message ​需要 ​local ​和 ​remote ​两个 ​net.Addr​ ,分别表示本地地址和远端(客户端)地址(此处的地址主要用于日志监控),初始化后通过 ​SetRequestBytes(buf []byte) error​ 设置请求的二进制数据。最后调用 ​invoker ​的 ​Call ​方法即可完成调用。调用完成后可通过 ​message ​的 ​GetResponseBytes() ([]byte, error)​ 获取响应的二进制数据。

import (
		...
    "github.com/cloudwego/kitex/sdk/message"
  	...
)

func main() {
    var reqPayload, respPayload []byte
    var local, remote net.Addr
    ...
    // init local/remote
    ...
    ivk := echo.NewInvoker(new(EchoImpl))
    msg := message.NewMessage(local, remote)
    // 装载payload
    msg.SetRequestBytes(reqPayload)
    // 发起调用
    err := ivk.Call(msg)
    if err != nil {
        ...
    }
    respPayload, err = msg.GetResponseBytes()
    if err != nil {
        ...
    }
}


Kitex 泛化调用
Kitex Metainfo
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }