bertrandmartel / aws-ssm-session

Javascript library for starting an AWS SSM session compatible with Browser and NodeJS
MIT License
50 stars 9 forks source link

funky terminal formatting #15

Open jrmylee opened 1 year ago

jrmylee commented 1 year ago

Running into some funky terminal outputs when using this repo. I essentially have the same setup as the source code, but when running commands like ls, I get ordering problems, and missing characters like below. Is this a known issue and are there potential work around?

Screen Shot 2022-12-07 at 2 04 06 AM
jrmylee commented 1 year ago

fixed it. Looks like some messages were coming back out of order. Just need to keep track of the last seq number to fix this.

` var lastSeqNum = -1; var buffer = []; const message = function (event) { var agentMessage = ssm.decode(event.data); ssm.sendACK(socket, agentMessage);

    if (agentMessage.payloadType === 17) {
        ssm.sendInitMessage(socket, termOptions);
        return;
    }

    if (agentMessage.payloadType === 1) {
        if (agentMessage.sequenceNumber - 1 !== lastSeqNum) {
            buffer.push(agentMessage);
        } else {
            lastSeqNum = agentMessage.sequenceNumber;
            writeToTerminal(textDecoder.decode(agentMessage.payload));
            if (buffer.length > 0) {
                let length = buffer.length;
                for (let i = length - 1; i >= 0; i--) {
                    if (buffer[i].sequenceNumber - 1 === lastSeqNum) {
                        lastSeqNum = buffer[i].sequenceNumber;
                        writeToTerminal(textDecoder.decode(buffer[i].payload));
                        buffer.splice(i, 1);
                    }
                }
            }
        }
    }
}

`

rupertbg commented 1 year ago

also might be related to terminal size? #16