Files
mixly3/common/modules/mixly-modules/web-socket/loader.js

95 lines
2.6 KiB
JavaScript

goog.loadJs('web', () => {
goog.require('Mixly.Debug');
goog.require('Mixly.Config');
goog.require('Mixly.StatusBarsManager');
goog.require('Mixly.Socket');
goog.require('Mixly.WebSocket.Serial');
goog.require('Mixly.WebSocket.ArduShell');
goog.require('Mixly.WebSocket.BU');
goog.require('Mixly.WebSocket.Ampy');
goog.provide('Mixly.WebSocket.Loader');
const {
Debug,
Config,
StatusBarsManager,
Socket,
WebSocket
} = Mixly;
const {
Loader,
Serial,
ArduShell,
BU,
Ampy
} = WebSocket;
const { SOFTWARE } = Config;
Loader.init = function () {
let url = '';
if (SOFTWARE.webSocket?.url) {
url = SOFTWARE.webSocket.url;
} else {
url = `wss://${window.location.host}`;
}
const mixlySocket = new Socket(`${url}/all`, {
path: '/mixly-socket/',
reconnection: true,
reconnectionDelayMax: 10000,
transports: ['websocket'],
protocols: ['my-protocol-v1']
});
const socket = mixlySocket.getSocket();
socket.on('connect', () => {
Serial.getPorts()
.then((ports) => {
let portsName = [];
for (let port of ports) {
portsName.push(port.name);
}
const { mainStatusBarTabs } = Mixly;
let keys = mainStatusBarTabs.keys();
const statusBarType = StatusBarsManager.typesRegistry.getItem('serial');
for (let key of keys) {
const statusBar = mainStatusBarTabs.getStatusBarById(key);
if (!(statusBar instanceof statusBarType)) {
continue;
}
const portName = statusBar.getPortName();
if (!portsName.includes(portName)) {
continue;
}
socket.emit('serial.create', portName);
}
Serial.renderSelectBox(ports);
})
.catch(Debug.error);
});
socket.on('disconnect', () => {
const { mainStatusBarTabs } = Mixly;
let keys = mainStatusBarTabs.keys();
const statusBarType = StatusBarsManager.typesRegistry.getItem('serial');
for (let key of keys) {
const statusBar = mainStatusBarTabs.getStatusBarById(key);
if (statusBar instanceof statusBarType) {
statusBar.close().catch(Debug.error);
}
}
Serial.refreshPorts();
});
Serial.init(mixlySocket);
ArduShell.init(mixlySocket);
BU.init(mixlySocket);
Ampy.init(mixlySocket);
}
});