Javascript 如何使原型与nodejs和protobufjs一起工作?

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

我对原型缓冲太陌生了。我正在尝试将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_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”);`但它不起作用。