目前在项目中采用 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 对象。