in src/main/resources/static/components/session/AxtSession.tsx [503:548]
componentDidMount() {
this.container = document.getElementById("terminal");
this.terminal.open(this.container)
this.terminal.write(term.hideCursor());
this.getTermSize()
this.terminal.resize(this.cols, this.rows)
this.terminal.onData(this.onInput.bind(this));
window.addEventListener("resize", () => {
this.debounceResize()
})
const type = this.instanceId.startsWith("mi-") ? "managed-instances" : "instances"
const info = `/api/${this.productId}/regions/${this.regionId}/${type}/${this.instanceId}`
this.terminal.write(`[-] 正在查询实例[${this.instanceId}]的信息与状态...\r\n`)
axios.get(info).then(detail => { // 查询实例信息,TODO:检查实例的云助手在线状态
if (detail.data.instances.length == 0) {
this.terminal.write(`[x] 未找到此实例[${this.instanceId}/${this.regionId}]\r\n`);
return;
}
const instance = detail.data.instances[0]
// noinspection TypeScriptValidateTypes
this.setState({instance: instance})
this.terminal.write(`[o] 实例名称: ${instance.instanceName}\r\n`)
if (this.instanceId.startsWith("mi-")) {
if (instance.connected) {
const ip: string[] = instance.networkInterfaces.map(eni => eni.primaryIpAddress)
this.terminal.write(`[o] 私网地址: ${ip.join(", ")}\r\n`)
this.terminal.write(`[o] 云助手状态: 在线。\r\n`)
} else {
this.terminal.write(`[o] 私网地址: ${instance.intranetIp}\r\n`)
this.terminal.write(`[o] 云助手状态: 离线。\r\n`)
return;
}
} else {
this.terminal.write(`[o] 实例状态: ${instance.status}。\r\n`)
if ("Running" != instance.status) {
this.terminal.write(`[x] 实例状态非Running,无法连接。\r\n`)
return;
}
}
this.startTerminalSession();
})
}