summaryrefslogtreecommitdiff
path: root/src/web/app/common/scripts/messaging-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/messaging-stream.ls
downloadmisskey-b3f42e62af698a67c2250533c437569559f1fdf9.tar.gz
misskey-b3f42e62af698a67c2250533c437569559f1fdf9.tar.bz2
misskey-b3f42e62af698a67c2250533c437569559f1fdf9.zip
Initial commit :four_leaf_clover:
Diffstat (limited to 'src/web/app/common/scripts/messaging-stream.ls')
-rw-r--r--src/web/app/common/scripts/messaging-stream.ls34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/web/app/common/scripts/messaging-stream.ls b/src/web/app/common/scripts/messaging-stream.ls
new file mode 100644
index 0000000000..298285dc93
--- /dev/null
+++ b/src/web/app/common/scripts/messaging-stream.ls
@@ -0,0 +1,34 @@
+# 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?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