commit
1e54a1b5e8
@ -1,56 +0,0 @@ |
||||
const Duplex = require('readable-stream').Duplex |
||||
const inherits = require('util').inherits |
||||
|
||||
module.exports = LocalMessageDuplexStream |
||||
|
||||
inherits(LocalMessageDuplexStream, Duplex) |
||||
|
||||
function LocalMessageDuplexStream (opts) { |
||||
Duplex.call(this, { |
||||
objectMode: true, |
||||
}) |
||||
|
||||
// this._origin = opts.origin
|
||||
this._name = opts.name |
||||
this._target = opts.target |
||||
|
||||
// console.log('LocalMessageDuplexStream ('+this._name+') - initialized...')
|
||||
window.addEventListener('message', this._onMessage.bind(this), false) |
||||
} |
||||
|
||||
// private
|
||||
|
||||
LocalMessageDuplexStream.prototype._onMessage = function (event) { |
||||
var msg = event.data |
||||
// console.log('LocalMessageDuplexStream ('+this._name+') - heard message...', event)
|
||||
// validate message
|
||||
if (event.origin !== location.origin) return // console.log('LocalMessageDuplexStream ('+this._name+') - rejected - (event.origin !== location.origin) ')
|
||||
if (typeof msg !== 'object') return // console.log('LocalMessageDuplexStream ('+this._name+') - rejected - (typeof msg !== "object") ')
|
||||
if (msg.target !== this._name) return // console.log('LocalMessageDuplexStream ('+this._name+') - rejected - (msg.target !== this._name) ', msg.target, this._name)
|
||||
if (!msg.data) return // console.log('LocalMessageDuplexStream ('+this._name+') - rejected - (!msg.data) ')
|
||||
// console.log('LocalMessageDuplexStream ('+this._name+') - accepted', msg.data)
|
||||
// forward message
|
||||
try { |
||||
this.push(msg.data) |
||||
} catch (err) { |
||||
this.emit('error', err) |
||||
} |
||||
} |
||||
|
||||
// stream plumbing
|
||||
|
||||
LocalMessageDuplexStream.prototype._read = noop |
||||
|
||||
LocalMessageDuplexStream.prototype._write = function (data, encoding, cb) { |
||||
// console.log('LocalMessageDuplexStream ('+this._name+') - sending message...')
|
||||
var message = { |
||||
target: this._target, |
||||
data: data, |
||||
} |
||||
window.postMessage(message, location.origin) |
||||
cb() |
||||
} |
||||
|
||||
// util
|
||||
|
||||
function noop () {} |
Loading…
Reference in new issue