diff --git a/lib/nodejs/lib/thrift/xhr_connection.js b/lib/nodejs/lib/thrift/xhr_connection.js index ea542d1fe58..d6c1f29d22d 100644 --- a/lib/nodejs/lib/thrift/xhr_connection.js +++ b/lib/nodejs/lib/thrift/xhr_connection.js @@ -20,9 +20,10 @@ var util = require("util"); var EventEmitter = require("events").EventEmitter; var thrift = require("./thrift"); -var TBufferedTransport = require("./buffered_transport"); -var TJSONProtocol = require("./json_protocol"); -var InputBufferUnderrunError = require("./input_buffer_underrun_error"); +var TBufferedTransport = require('./buffered_transport'); +var TJSONProtocol = require('./json_protocol'); +var TBinaryProtocol = require('./binary_protocol'); +var InputBufferUnderrunError = require('./input_buffer_underrun_error'); var createClient = require("./create_client"); @@ -108,13 +109,22 @@ XHRConnection.prototype.flush = function () { var xreq = this.getXmlHttpRequestObject(); + if (this.protocol == TBinaryProtocol) { + xreq.responseType = 'arraybuffer'; + } + if (xreq.overrideMimeType) { xreq.overrideMimeType("application/json"); } xreq.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { - self.setRecvBuffer(this.responseText); + if(self.protocol == TBinaryProtocol) { + self.setRecvBuffer(this.response); + } + else { + self.setRecvBuffer(this.responseText); + } } };