summaryrefslogtreecommitdiff
path: root/src/web/app/common/scripts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2017-06-09 01:03:54 +0900
committersyuilo <syuilotan@yahoo.co.jp>2017-06-09 01:03:54 +0900
commit4e5545af384f610a56b3d19ea73c3b801b0be6c6 (patch)
tree4cd0b12e891bd1d8991ac4ad14cbbb7af83a0aee /src/web/app/common/scripts
parentv2038 (diff)
downloadsharkey-4e5545af384f610a56b3d19ea73c3b801b0be6c6.tar.gz
sharkey-4e5545af384f610a56b3d19ea73c3b801b0be6c6.tar.bz2
sharkey-4e5545af384f610a56b3d19ea73c3b801b0be6c6.zip
nanka iroiro
Diffstat (limited to 'src/web/app/common/scripts')
-rw-r--r--src/web/app/common/scripts/home-stream.js18
-rw-r--r--src/web/app/common/scripts/messaging-stream.js52
-rw-r--r--src/web/app/common/scripts/server-stream.js14
-rw-r--r--src/web/app/common/scripts/stream.js15
4 files changed, 57 insertions, 42 deletions
diff --git a/src/web/app/common/scripts/home-stream.js b/src/web/app/common/scripts/home-stream.js
new file mode 100644
index 0000000000..24f13cd291
--- /dev/null
+++ b/src/web/app/common/scripts/home-stream.js
@@ -0,0 +1,18 @@
+'use strict';
+
+import Stream from './stream';
+
+/**
+ * Home stream connection
+ */
+class Connection extends Stream {
+ constructor(me) {
+ super('', {
+ i: me.token
+ });
+
+ this.on('i_updated', me.update);
+ }
+}
+
+export default Connection;
diff --git a/src/web/app/common/scripts/messaging-stream.js b/src/web/app/common/scripts/messaging-stream.js
index 50d41c2be9..261525d5f6 100644
--- a/src/web/app/common/scripts/messaging-stream.js
+++ b/src/web/app/common/scripts/messaging-stream.js
@@ -1,42 +1,22 @@
-const ReconnectingWebSocket = require('reconnecting-websocket');
-import * as riot from 'riot';
-import CONFIG from './config';
+'use strict';
-class Connection {
- constructor(me, otherparty) {
- // BIND -----------------------------------
- this.onOpen = this.onOpen.bind(this);
- this.onMessage = this.onMessage.bind(this);
- this.close = this.close.bind(this);
- // ----------------------------------------
-
- this.event = riot.observable();
- this.me = me;
-
- const host = CONFIG.apiUrl.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);
- }
+import Stream from './stream';
- onOpen() {
- this.socket.send(JSON.stringify({
- i: this.me.token
- }));
- }
-
- onMessage(message) {
- try {
- const msg = JSON.parse(message.data);
- if (msg.type) this.event.trigger(msg.type, msg.body);
- } catch(e) {
- // noop
- }
- }
+/**
+ * Messaging stream connection
+ */
+class Connection extends Stream {
+ constructor(me, otherparty) {
+ super('messaging', {
+ i: me.token,
+ otherparty
+ });
- close() {
- this.socket.removeEventListener('open', this.onOpen);
- this.socket.removeEventListener('message', this.onMessage);
+ this.on('_connected_', () => {
+ this.send({
+ i: me.token
+ });
+ });
}
}
diff --git a/src/web/app/common/scripts/server-stream.js b/src/web/app/common/scripts/server-stream.js
new file mode 100644
index 0000000000..a1c466b35d
--- /dev/null
+++ b/src/web/app/common/scripts/server-stream.js
@@ -0,0 +1,14 @@
+'use strict';
+
+import Stream from './stream';
+
+/**
+ * Server stream connection
+ */
+class Connection extends Stream {
+ constructor() {
+ super('server');
+ }
+}
+
+export default Connection;
diff --git a/src/web/app/common/scripts/stream.js b/src/web/app/common/scripts/stream.js
index ac3dd67153..981118b5de 100644
--- a/src/web/app/common/scripts/stream.js
+++ b/src/web/app/common/scripts/stream.js
@@ -5,10 +5,10 @@ import * as riot from 'riot';
import CONFIG from './config';
/**
- * Home stream connection
+ * Misskey stream connection
*/
class Connection {
- constructor(me) {
+ constructor(endpoint, params) {
// BIND -----------------------------------
this.onOpen = this.onOpen.bind(this);
this.onClose = this.onClose.bind(this);
@@ -20,16 +20,19 @@ class Connection {
riot.observable(this);
this.state = 'initializing';
- this.me = me;
this.buffer = [];
const host = CONFIG.apiUrl.replace('http', 'ws');
- this.socket = new ReconnectingWebSocket(`${host}?i=${me.token}`);
+ const query = params
+ ? Object.keys(params)
+ .map(k => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))
+ .join('&')
+ : null;
+
+ this.socket = new ReconnectingWebSocket(`${host}/${endpoint}${query ? '?' + query : ''}`);
this.socket.addEventListener('open', this.onOpen);
this.socket.addEventListener('close', this.onClose);
this.socket.addEventListener('message', this.onMessage);
-
- this.on('i_updated', me.update);
}
/**