✌️
This commit is contained in:
parent
d168ac6106
commit
4770e1fab8
4 changed files with 42 additions and 42 deletions
39
src/web/app/common/scripts/stream.js
Normal file
39
src/web/app/common/scripts/stream.js
Normal file
|
@ -0,0 +1,39 @@
|
|||
const ReconnectingWebSocket = require('reconnecting-websocket');
|
||||
const riot = require('riot');
|
||||
|
||||
module.exports = me => {
|
||||
let state = 'initializing';
|
||||
const stateEv = riot.observable();
|
||||
const event = riot.observable();
|
||||
const host = CONFIG.api.url.replace('http', 'ws');
|
||||
const socket = new ReconnectingWebSocket(`${host}?i=${me.token}`);
|
||||
|
||||
socket.onopen = () => {
|
||||
state = 'connected';
|
||||
stateEv.trigger('connected');
|
||||
};
|
||||
|
||||
socket.onclose = () => {
|
||||
state = 'reconnecting';
|
||||
stateEv.trigger('closed');
|
||||
};
|
||||
|
||||
socket.onmessage = message => {
|
||||
try {
|
||||
const message = JSON.parse(message.data);
|
||||
if (message.type) {
|
||||
event.trigger(message.type, message.body);
|
||||
}
|
||||
} catch (e) {
|
||||
// noop
|
||||
}
|
||||
};
|
||||
|
||||
event.on('i_updated', me.update);
|
||||
|
||||
return {
|
||||
stateEv: stateEv,
|
||||
getState: () => state,
|
||||
event: event
|
||||
};
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue