diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-02-04 00:34:31 +0100 |
---|---|---|
committer | Eugen Rochko <eugen@zeonfederated.com> | 2017-02-04 00:34:31 +0100 |
commit | ccb8ac857330e1ad3aee37b340e5c6e242ac1dd6 (patch) | |
tree | 38c2bd062cd619f12d31836a1dc4ad2e2f70468d /app/assets/javascripts/components/stream.jsx | |
parent | 8c0bc1309fd40807cf5895b492fc7d1a2c9d7b83 (diff) |
Make the streaming API also handle websockets (because trying to get the browser EventSource interface to
work flawlessly was a nightmare). WARNING: This commit makes the web UI connect to the streaming API instead of ActionCable like before. This means that if you are upgrading, you should set that up beforehand.
Diffstat (limited to 'app/assets/javascripts/components/stream.jsx')
-rw-r--r-- | app/assets/javascripts/components/stream.jsx | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/app/assets/javascripts/components/stream.jsx b/app/assets/javascripts/components/stream.jsx new file mode 100644 index 000000000..0787399f6 --- /dev/null +++ b/app/assets/javascripts/components/stream.jsx @@ -0,0 +1,21 @@ +import WebSocketClient from 'websocket.js'; + +const createWebSocketURL = (url) => { + const a = document.createElement('a'); + + a.href = url; + a.href = a.href; + a.protocol = a.protocol.replace('http', 'ws'); + + return a.href; +}; + +export default function getStream(accessToken, stream, { connected, received, disconnected }) { + const ws = new WebSocketClient(`${createWebSocketURL(STREAMING_API_BASE_URL)}/api/v1/streaming/?access_token=${accessToken}&stream=${stream}`); + + ws.onopen = connected; + ws.onmessage = e => received(JSON.parse(e.data)); + ws.onclose = disconnected; + + return ws; +}; |