componentDidMount()

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();
        })
    }