源码仓库:https://github.com/robinfoxnan/BirdTalkServer/
默认情况下,生成的js代码中使用number表示int64,这样在具体交互过程中,数据就不精准,比如时间戳,或者crc64哈希都无法使用了;
在目前新版本的protoc可以根据标记,将int64在JS中使用string 来表示,具体换算数据时候使用Bigint对象;
// 首先需要同步客户端的基础信息,服务端应答各种信息
message MsgHello {
string clientId = 1; // 客户端标识,用于区分不同客户端
string version = 2; // 客户端的版本信息
string platform = 3; // 客户端运行的平台信息(例如:iOS、Android、Windows等)
// 其他可能的字段,取决于你的需求
string stage = 5; // 状态数据, clienthello, serverhello,
int64 keyPrint = 6 [jstype = JS_STRING]; // 对称密钥指纹,用于SID
int64 rsaPrint = 7 [jstype = JS_STRING]; // 自己的公钥指纹
map<string, string> params = 8; // redirect->ip:port, dht
}
这样标记之后,对于其他的语言并没有影响,在JS中可以做到兼容;