You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bit4sat/web/src/Websocket.js

74 lines
1.5 KiB
JavaScript

import { apiPort } from './api.js';
let singleton = false;
export class WS {
constructor(){
console.log("starting new websocket")
if (singleton && singleton.open) {
return singleton;
}
const endpoint = `ws://localhost:2015/ws`;
this.conn = new WebSocket(endpoint);
this.conn.onerror = this.onerror();
this.conn.onclose = this.onclose();
this.conn.onmessage = this.onmessage();
this.conn.onopen = this.onopen();
}
send(data) {
this.conn.send(data);
}
onopen(){
let self = this;
return (ev) => {
self.opened = true;
console.log("websocket opened");
}
}
onerror (){
let self = this;
return (ev) => {
console.error(ev);
}
}
onclose () {
let self = this;
let instance = singleton
return (ev) => {
console.warn("websocket closed");
//TODO: restore on prod
//setTimeout(() =>{
//console.log("websocket: trying to reconnect")
//instance = new WS()
//}, 3000)
}
}
onmessage() {
let self = this;
return (ev) => {
let msg = JSON.parse(ev.data);
switch (msg.type) {
case 'hello':
console.log(msg.data);
break;
case 'upload-accepted':
console.log(msg)
break;
}
}
}
}