diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2017-02-18 16:51:11 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2017-02-18 16:51:11 +0900 |
| commit | b4046da451ea0be70a5ded1a277ea3784c838050 (patch) | |
| tree | fe8a17c2af82c6fd1604156fa1d93bf91bec4501 /src/web/app | |
| parent | :v: (diff) | |
| download | sharkey-b4046da451ea0be70a5ded1a277ea3784c838050.tar.gz sharkey-b4046da451ea0be70a5ded1a277ea3784c838050.tar.bz2 sharkey-b4046da451ea0be70a5ded1a277ea3784c838050.zip | |
:v:
Diffstat (limited to 'src/web/app')
| -rw-r--r-- | src/web/app/common/mixins.ls | 2 | ||||
| -rw-r--r-- | src/web/app/common/scripts/messaging-stream.js | 36 | ||||
| -rw-r--r-- | src/web/app/common/scripts/messaging-stream.ls | 34 |
3 files changed, 37 insertions, 35 deletions
diff --git a/src/web/app/common/mixins.ls b/src/web/app/common/mixins.ls index 947fad553d..1194793994 100644 --- a/src/web/app/common/mixins.ls +++ b/src/web/app/common/mixins.ls @@ -15,7 +15,7 @@ module.exports = (me) ~> signout: require './scripts/signout.js' riot.mixin \messaging-stream do - MessagingStreamConnection: require './scripts/messaging-stream.ls' + MessagingStreamConnection: require './scripts/messaging-stream' riot.mixin \is-promise do is-promise: require './scripts/is-promise.ls' diff --git a/src/web/app/common/scripts/messaging-stream.js b/src/web/app/common/scripts/messaging-stream.js new file mode 100644 index 0000000000..e6fc6f8bd0 --- /dev/null +++ b/src/web/app/common/scripts/messaging-stream.js @@ -0,0 +1,36 @@ +const ReconnectingWebSocket = require('reconnecting-websocket'); +const riot = require('riot'); + +class Connection { + constructor(me, otherparty) { + this.event = riot.observable(); + this.me = me; + + const host = CONFIG.api.url.replace('http', 'ws'); + this.socket = new ReconnectingWebSocket(`${host}/messaging?i=${me.token}&otherparty=${otherparty}`); + this.socket.addEventListener('open', this.onOpen); + this.socket.addEventListener('message', this.onMessage); + } + + onOpen() { + this.socket.send(JSON.stringify({ + i: this.me.token + })); + } + + onMessage(message) { + try { + const message = JSON.parse(message.data); + if (message.type) this.event.trigger(message.type, message.body); + } catch(e) { + // noop + } + } + + close() { + this.socket.removeEventListener('open', this.onOpen); + this.socket.removeEventListener('message', this.onMessage); + } +} + +module.exports = Connection; diff --git a/src/web/app/common/scripts/messaging-stream.ls b/src/web/app/common/scripts/messaging-stream.ls deleted file mode 100644 index ac3e74f1f5..0000000000 --- a/src/web/app/common/scripts/messaging-stream.ls +++ /dev/null @@ -1,34 +0,0 @@ -# Stream -#================================ - -ReconnectingWebSocket = require 'reconnecting-websocket' -riot = require 'riot' - -class Connection - (me, otherparty) ~> - @event = riot.observable! - @me = me - host = CONFIG.api.url.replace \http \ws - @socket = new ReconnectingWebSocket "#{host}/messaging?i=#{me.token}&otherparty=#{otherparty}" - - @socket.add-event-listener \open @on-open - @socket.add-event-listener \message @on-message - - on-open: ~> - @socket.send JSON.stringify do - i: @me.token - - on-message: (message) ~> - try - message = JSON.parse message.data - if message.type? - @event.trigger message.type, message.body - catch - # ignore - - close: ~> - @socket.remove-event-listener \open @on-open - @socket.remove-event-listener \message @on-message - @socket.close! - -module.exports = Connection |