我終於找到了這個問題的答案,只是通過查看該的NodeJS圖書館浪費了大量的時間之後。
//SERIALIZATION:
var buffer = new Buffer(notification);
var transport = new thrift.TFramedTransport(buffer);
var binaryProt = new thrift.TBinaryProtocol(transport);
notification.write(binaryProt);
此時,字節陣列可在transport.outBuffers字段中找到:
var byteArray = transport.outBuffers;
對於反序列化:
var tTransport = new thrift.TFramedTransport(byteArray);
var tProtocol = new thrift.TBinaryProtocol(tTransport);
var receivedNotif = new notification_type.Notification();
receivedNotif.read(tProtocol);
此外以下行需要被添加到從庫的NodeJS的index.js文件節儉:
exports.TFramedTransport = require('./transport').TFramedTransport;
exports.TBufferedTransport = require('./transport').TBufferedTransport;
exports.TBinaryProtocol = require('./protocol').TBinaryProtocol;
另外還有在圖書館的NodeJS至少一個錯誤。
對不起,但您在同一個腳本中反序列化了已創建的相同數據。但是如果使用一些中間存儲器(rabbitmq)在兔子裏存儲什麼數據?切出緩衝區?或者每次調用flush並在回調中保存數據?並且對於byteArray使用片並不是每次都是好主意,因爲它不復制數據,而是參考它。 – Selvatico