diff --git a/.travis.yml b/.travis.yml index 990f719..3529596 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,7 @@ node_js: - 4 - 5 - 6 +- 8 before_script: - export DISPLAY=:99.0 @@ -13,6 +14,3 @@ before_script: notifications: email: - damon.oehlman@gmail.com - - - diff --git a/package.json b/package.json index 9ee841a..6d427de 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "homepage": "https://github.com/DamonOehlman/pull-ws", "dependencies": { "relative-url": "^1.0.2", + "safe-buffer": "^5.1.1", "ws": "^1.1.0" }, "devDependencies": { diff --git a/source.js b/source.js index f1f66cb..887bd6e 100644 --- a/source.js +++ b/source.js @@ -6,6 +6,15 @@ <<< examples/read.js **/ +var Buffer = require('safe-buffer').Buffer; + +// copied from github.com/feross/buffer +// Some ArrayBuffers are not passing the instanceof check, so we need to do a bit more work :( +function isArrayBuffer (obj) { + return obj instanceof ArrayBuffer || + (obj != null && obj.constructor != null && obj.constructor.name === 'ArrayBuffer' && + typeof obj.byteLength === 'number') +} module.exports = function(socket, cb) { var buffer = []; @@ -14,9 +23,8 @@ module.exports = function(socket, cb) { var started = false; socket.addEventListener('message', function(evt) { var data = evt.data; - - if (data instanceof ArrayBuffer) { - data = new Buffer(data); + if (isArrayBuffer(data)) { + data = Buffer.from(data); } if (receiver) {