J'essaie de décoder le protobuf du côté serveur (chaîne base64) en objet javascript. Utiliser pour le décodage protobuf.js.Comment décoder la chaîne protobuf base64 en objet js
Comme doc suggèrent:
var builder = ProtoBuf.newBuilder({ convertFieldsToCamelCase: true });
var YourMessage = builder.build("YourMessage");
var buffer = ...; // E.g. a buffer received on a WebSocket
var myMessage = YourMessage.decode(buffer);
...
var b64str = ...; // E.g. a string fetched via AJAX
var myMessage = YourMessage.decode64(b64str);
Voilà comment j'essaie de le faire (données - chaîne base64)
var proto = dcodeIO.ProtoBuf;
var buffer = dcodeIO.ByteBuffer;
var b = buffer.wrap(data,"binary");
var builder = proto.newBuilder({ convertFieldsToCamelCase: true });
builder.define("Events");
var message = builder.build("Events");
var result = message.decode(b); //also try to decode base64 string - message.decode64(data);
J'obtiens l'erreur
decode/decode64 non définie
Je ne peux pas voir dans ce code où vous chargez dans le fichier proto ou le texte qui définit votre schéma protobuf . Vous devriez avoir une ligne comme 'ProtoBuf.loadProtoFile (" tests/example1.proto ", builder);' dire où se trouve votre définition .proto. Cela expliquerait le constructeur ne construisant pas les messages et les valeurs nulles que vous obtenez –
@PhilipPryde merci, j'ai perdu le descripteur. –
Cela a-t-il fonctionné pour vous alors? si oui, je vais cogner mon commentaire à une réponse ... –