diff --git a/package.json b/package.json index 013bef9..9fd5e3a 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "license": "MIT", "dependencies": { "debug": "^3.1.0", + "uuid": "^3.3.2", "websocket": "~1.0.22" }, "devDependencies": { diff --git a/src/lib/base.coffee b/src/lib/base.coffee index c6d5810..e1b1846 100644 --- a/src/lib/base.coffee +++ b/src/lib/base.coffee @@ -1,4 +1,5 @@ platform = require '../helpers/platform' +uuid = require 'uuid' class BaseRuntime extends platform.EventEmitter constructor: (definition) -> @@ -124,4 +125,13 @@ class BaseRuntime extends platform.EventEmitter send: (protocol, command, payload) -> + _prepareMessage: (protocol, command, payload) -> + msg = + protocol: protocol + command: command + payload: payload + secret: @definition.secret + requestId: uuid() + return msg + module.exports = BaseRuntime diff --git a/src/lib/iframe.coffee b/src/lib/iframe.coffee index 237d7fb..9ec21eb 100644 --- a/src/lib/iframe.coffee +++ b/src/lib/iframe.coffee @@ -114,23 +114,18 @@ class IframeRuntime extends Base postMessage: (protocol, command, payload) -> w = @iframe.contentWindow return unless w + + msg = @_prepareMessage protocol, command, payload + try return if w.location.href is 'about:blank' if w.location.href.indexOf('chrome-extension://') isnt -1 throw new Error 'Use * for IFRAME communications in a Chrome app' catch e # Chrome Apps - w.postMessage JSON.stringify( - protocol: protocol - command: command - payload: payload - ), '*' + w.postMessage JSON.stringify(msg), '*' return - w.postMessage JSON.stringify( - protocol: protocol - command: command - payload: payload - ), w.location.href + w.postMessage JSON.stringify(msg), w.location.href onMessage: (message) => if message.source and message.source isnt @iframe.contentWindow diff --git a/src/lib/opener.coffee b/src/lib/opener.coffee index f560814..183dcad 100644 --- a/src/lib/opener.coffee +++ b/src/lib/opener.coffee @@ -66,11 +66,8 @@ class OpenerRuntime extends Base postMessage: (protocol, command, payload) -> return unless window.opener - window.opener.postMessage JSON.stringify( - protocol: protocol - command: command - payload: payload - ), '*' + msg = @_prepareMessage protocol, command, payload + window.opener.postMessage JSON.stringify(msg), '*' onMessage: (message) => if message.source and message.source isnt @iframe.contentWindow diff --git a/src/lib/webrtc.coffee b/src/lib/webrtc.coffee index 4dbc997..8c8fa4b 100644 --- a/src/lib/webrtc.coffee +++ b/src/lib/webrtc.coffee @@ -69,10 +69,7 @@ class WebRTCRuntime extends Base @emit 'disconnected' send: (protocol, command, payload) -> - m = - protocol: protocol - command: command - payload: payload + m = @_prepareMessage protocol, command, payload if @connecting @buffer.push m return diff --git a/src/lib/websocket.coffee b/src/lib/websocket.coffee index 4620283..0d769bd 100644 --- a/src/lib/websocket.coffee +++ b/src/lib/websocket.coffee @@ -85,10 +85,7 @@ class WebSocketRuntime extends Base return return unless @connection - @connection.send JSON.stringify - protocol: protocol - command: command - payload: payload + @connection.send JSON.stringify @_prepareMessage protocol, command, payload handleError: (error) => if @protocol is 'noflo'