ikerli
ikerli
暂时还不支持 json 协议哦
原来是同厂的大佬,哈哈。 目前还没支持 json 协议,后续有考虑支持json格式的计划.
json这块我也不知道怎么弄好, 是直接 json 传数据(外面加一下自定义的包头), 还是说 http 请求体里面加 json。 我个人有点倾向于 Http 请求体里面包 json 字符串,然后服务端增加下json解析。大佬有什么高见不
channel 不需要区分,就每次调用 RPC 的时候,都需要初始化一个 TinyPbRpcChannel 对象。 如果是有多个接口,比如 login register,目前的做法是 先把 proto 文件加上这些接口, 然后调用 QueryService_Stub.login() , QueryService_Stub.register 方法就可以了
你说的 channel 写死路径指的是啥啊,是指这里指定了对端服务的 ip:port吗
抱歉,我没用过 flutter 不太懂。哈哈哈。 不过如果是外部客户端想调用 rpc 服务,我觉得rpc服务应该提供 HTTP 协议的接口这种比较规范的。 protobuf 更适用于内部服务之间的相互调用。 对外就提供HTTP
或者说你期望以哪种形式调用,可以给我个简单的示例吗。
这个还没有,如果服务端是 protobuf 协议的话,目前只有 c++ 调用。 我后面看看怎么解决这个问题
嗯嗯,是这样的。本身现在支持两种协议, 一种是标准的 HTTP 协议, 这个不说了,肯定是客户端无关并且跨语言的,随便什么语言都能构造HTTP请求包。这种协议一般提供给外部调用。 另外一个是自定义的 TinyPB 协议,这个协议是基于 protobuf 的。这种自定义协议由于自己扩展了一些包头,加了一些字段如起始标志符,包长度等。而且加这些字段是必要的, 因为不可能只传 protobuf 二进制的字节流,因为服务端没法解包,甚至连包的起始和结束位置都找不到。 所以这种自定义的协议,一般适用于公司内部多个服务之前相互调用。 如果要跨语言的话,这时候需要把你的协议编解码格式提供给客户端才行,比如提供一套 TinyPB 协议的编解码api接口,客户端先用api编码之后再发送才行。 我下来也看了一下其他的 RPC 实现,事实上也可以用 json 来序列化。 客户端只需要传入纯 json 字符串就行了,当然要按照一定的格式, 比如 {method: "xxx", param: "xxx"}...
别用我封装的 MySQL,有bug。 有空我再修复,先自己封装下 Mysql的类把。。。。