feat(core): 在线版添加对web compiler的支持

This commit is contained in:
王立帮
2025-05-04 14:38:32 +08:00
parent b9c0574780
commit e3f5caf0ce
21 changed files with 641 additions and 498 deletions

View File

@@ -0,0 +1,84 @@
goog.loadJs('web', () => {
goog.require('Mixly.Debug');
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,
StatusBarsManager,
Socket,
WebSocket
} = Mixly;
const {
Loader,
Serial,
ArduShell,
BU,
Ampy
} = WebSocket;
Loader.init = function () {
const mixlySocket = new Socket(`wss://${location.hostname}:4000/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);
}
});