summaryrefslogtreecommitdiff
path: root/src/web/app/common/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/app/common/scripts')
-rw-r--r--src/web/app/common/scripts/stream.js16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/web/app/common/scripts/stream.js b/src/web/app/common/scripts/stream.js
index 8004f11bc2..f6eaef3723 100644
--- a/src/web/app/common/scripts/stream.js
+++ b/src/web/app/common/scripts/stream.js
@@ -16,6 +16,7 @@ class Connection {
this.state = 'initializing';
this.me = me;
+ this.buffer = [];
const host = CONFIG.apiUrl.replace('http', 'ws');
this.socket = new ReconnectingWebSocket(`${host}?i=${me.token}`);
@@ -29,6 +30,13 @@ class Connection {
onOpen() {
this.state = 'connected';
this.trigger('_connected_');
+
+ // バッファーを処理
+ const _buffer = [].concat(this.buffer); // Shallow copy
+ this.buffer = []; // Clear buffer
+ _buffer.forEach(message => {
+ this.send(message); // Resend each buffered messages
+ });
}
onClose() {
@@ -46,8 +54,12 @@ class Connection {
}
send(message) {
- // TODO: バッファリングしてつぎ接続した時に送信する
- if (this.state != 'connected') return;
+ // まだ接続が確立されていなかったらバッファリングして次に接続した時に送信する
+ if (this.state != 'connected') {
+ this.buffer.push(message);
+ return;
+ };
+
this.socket.send(JSON.stringify(message));
}