37 lines
1.3 KiB
JavaScript
37 lines
1.3 KiB
JavaScript
const Topbar = {
|
|
_statusEl: null,
|
|
|
|
init() {
|
|
this._statusEl = document.getElementById('connection-status');
|
|
this._statusEl.style.cursor = 'pointer';
|
|
this._statusEl.addEventListener('click', () => {
|
|
if (!WS.connected) {
|
|
WS._reconnectDelay = 500;
|
|
WS._connect();
|
|
Toast.show('正在重连...', 'info', 1500);
|
|
}
|
|
});
|
|
|
|
WS.on('status', (status) => {
|
|
this._statusEl.className = `status-indicator ${status}`;
|
|
this._statusEl.querySelector('.status-text').textContent =
|
|
status === 'connected' ? '已连接' :
|
|
status === 'error' ? '连接错误' : '未连接';
|
|
});
|
|
|
|
setInterval(() => this._refreshStatus(), 5000);
|
|
},
|
|
|
|
async _refreshStatus() {
|
|
try {
|
|
const status = await API.getStatus();
|
|
const wsStatus = status.ws_clients > 0 ? 'connected' : 'disconnected';
|
|
this._statusEl.className = `status-indicator ${wsStatus}`;
|
|
this._statusEl.querySelector('.status-text').textContent =
|
|
wsStatus === 'connected' ? `已连接 (${status.ws_clients})` : '未连接';
|
|
} catch (e) { console.error(e); }
|
|
}
|
|
};
|
|
|
|
window.Topbar = Topbar;
|