summaryrefslogtreecommitdiff
path: root/src/web/app/common/scripts/stream.ls
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2016-12-29 07:49:51 +0900
committersyuilo <syuilotan@yahoo.co.jp>2016-12-29 07:49:51 +0900
commitb3f42e62af698a67c2250533c437569559f1fdf9 (patch)
treecdf6937576e99cccf85e6fa3aa8860a1173c7cfb /src/web/app/common/scripts/stream.ls
downloadsharkey-b3f42e62af698a67c2250533c437569559f1fdf9.tar.gz
sharkey-b3f42e62af698a67c2250533c437569559f1fdf9.tar.bz2
sharkey-b3f42e62af698a67c2250533c437569559f1fdf9.zip
Initial commit :four_leaf_clover:
Diffstat (limited to 'src/web/app/common/scripts/stream.ls')
-rw-r--r--src/web/app/common/scripts/stream.ls42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/web/app/common/scripts/stream.ls b/src/web/app/common/scripts/stream.ls
new file mode 100644
index 0000000000..534048248f
--- /dev/null
+++ b/src/web/app/common/scripts/stream.ls
@@ -0,0 +1,42 @@
+# Stream
+#================================
+
+ReconnectingWebSocket = require \reconnecting-websocket
+riot = require \riot
+
+module.exports = (me) ~>
+ state = \initializing
+ state-ev = riot.observable!
+ event = riot.observable!
+
+ socket = new ReconnectingWebSocket CONFIG.api.url.replace \http \ws
+
+ socket.onopen = ~>
+ state := \connected
+ state-ev.trigger \connected
+ socket.send JSON.stringify do
+ i: me.token
+
+ socket.onclose = ~>
+ state := \reconnecting
+ state-ev.trigger \closed
+
+ socket.onmessage = (message) ~>
+ try
+ message = JSON.parse message.data
+ if message.type?
+ event.trigger message.type, message.body
+ catch
+ # ignore
+
+ get-state = ~> state
+
+ event.on \i_updated (data) ~>
+ Object.assign me, data
+ me.trigger \updated
+
+ {
+ state-ev
+ get-state
+ event
+ }