Javascript 如何使原型与nodejs和protobufjs一起工作?
我对原型缓冲太陌生了。我正在尝试将protobufjs与Nodejs一起使用,因为我在demo.Proto中有以下Proto代码。我只想验证、编码并将请求发送到web套接字Javascript 如何使原型与nodejs和protobufjs一起工作?,javascript,node.js,websocket,protocol-buffers,Javascript,Node.js,Websocket,Protocol Buffers,我对原型缓冲太陌生了。我正在尝试将protobufjs与Nodejs一起使用,因为我在demo.Proto中有以下Proto代码。我只想验证、编码并将请求发送到web套接字 message Logon { required string user_name = 1; required string password = 2; optional string one_time_password = 3; optional string private
message Logon {
required string user_name = 1;
required string password = 2;
optional string one_time_password = 3;
optional string private_label = 4;
required string client_id = 5;
required string client_version = 6;
optional bool drop_concurrent_session = 7;
optional uint32 collapsing_level = 8;
optional uint32 protocol_version_minor = 9;
optional uint32 protocol_version_major = 10;
}
我的编码功能如下:
async function encoderProto(buffer, command) {
const root = await protobuf.load("democqg.proto");
const testMessage = root.lookupType("WebAPI_1." + command);
const err = testMessage.verify(buffer);
if (err) {
console.log("We got error");
console.log(err);
throw err;
}
const message = testMessage.encode(buffer);
return testMessage.toObject(message);
}
当我尝试使用原型编码时,使用以下请求。我在说“userName:string expected”时出错,但我在Proto中没有userName,为什么它说的是“userName”而不是“user\u name”。我的JSON可以验证吗?我怎样才能让它工作
var logininfo = {
"Logon" : {
"user_name": "demoid",
"password": "password!",
"client_app_id": "ID",
"client_version": "Version",
"collapsing_level" : 0,
"one_time_password": ""
}
}
var encoding = async () => {
let encodingmsg = await encoderProto(logininfo, "Logon");
return encodingmsg;
}
encoding().then((data) => {
console.log(data);
connection.send(data.toArrayBuffer());
});
我猜您必须将
logininfo.Login
传递到encoderProto
,而不是logininfo
。我甚至尝试使用`let encodingmsg=awit encoderProto(logininfo.Logon,“Logon”);`但它不起作用。