Open xinglinyin opened 6 years ago
@taowen
我尝试基于该项目,实现一个通用的thrift server proxy, 不依赖具体的thrift idl接口文件, 调试发现如下问题, 能否抽空看看? 我在知乎您的项目主页上反馈过
下游 plz.service 返回给client的编码后的数据, 上游拿到了,但是client一收到response, 就回去调用TbufferdTransport.read_struct去反解下游返回的接口response, 我调试时 ,请求线上服务和请求plz.service如下情况:
万分感谢!
那你server端咋写的
@taowen
大神, 抱歉回复你晚了! 这段时间切到其他项目了,这周继续弄这个
我server端代码如下, 其实就是在你实现的server.go 里 加了几行server实现
感谢@taowen 百忙之中,帮看看,可能哪里出问题了,我这边可以随时调试!
func main() {
/* transport, err := thrift.NewTServerSocket(":9898")
if err != nil {
panic(err)
}
handler := &EchoServer{}
processor := echo.NewEchoProcessor(handler)
transportFactory := thrift.NewTBufferedTransportFactory(8192)
protocolFactory := thrift.NewTCompactProtocolFactory()
server := thrift.NewTSimpleServer4(
processor,
transport,
transportFactory,
protocolFactory,
)
if err := server.Serve(); err != nil {
panic(err)
}
*/
type TestRequest struct {
Field1 string `thrift:",1"`
}
type TestResponse struct {
Field2 string `thrift:",1"`
}
server := NewServer(thrifter.Config{Protocol: thrifter.ProtocolBinary}.Froze()) server.Handle("sayHello", func(ctx countlog.Context, req TestRequest) (*TestResponse, error) { return &TestResponse{ Field2: "hello", }, nil }) server.Start("127.0.0.1:9998")
}
@taowen 您好!我是来自百度的braver, 想请教大神, 我看这个库server和client 实现,都是基于程序里定义的idl struct. 我现在有一份idl接口文件(.thrift), 我想基于接口thrift, 不静态的用thrift --gen 生成静态编译代码, 实现一个thrift rpc server, 您能方便指导我怎么实现么? 就是在启动server时, 去加载.thrift接口idl文件, 生成对应的service 万分感谢。