请教: WebSocket + Protobuf 做服务,如何定义路由

18次阅读

共计 460 个字符,预计需要花费 2 分钟才能阅读完成。

问题:

目前在项目中采用 WebSocket 长连接做服务,Protobuf 作为请求 / 响应的数据结构。

当存在多个路由时,如何定义它们呢?

举个例子:聊天室

接口 1:(按条件)筛选聊天内容
接口 2:发送消息

请教各位,长连接服务在这种场景,如何与客户端通讯(怎么定义路由,或者如果不定义,有什么其他办法吗?)

谢谢各位!


背景:我对于 Protobuf、长连接的使用经验比较匮乏,之前只做过 HTTP/RPC + Protobuf 的项目。

我的思路历程:

最简单的就是 Protobuf 封装一个标准路由结构:

message IRoute {
  string key = 1;
  string jsonRes = 2;
}

key 做路由键,jsonRes 就是 JSON 字符串,只有响应时才返回纯 Protobuf 对象,但这就买椟还珠了吧?(不如直接用 JSON)

后面又想定义 Interface 来设计,先将数据转化为标准对象,然后判断 key 来将数据转化为实际路由,但对二进制数据,我做不到只转化部分内容……

最后,目前打算使用 text 作为路由,自己手动分割,然后响应时返回 Protobuf 对象。

正文完
 0