diff options
Diffstat (limited to 'src/main/overleafProtocol.ts')
| -rw-r--r-- | src/main/overleafProtocol.ts | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/main/overleafProtocol.ts b/src/main/overleafProtocol.ts index 884aff2..abee516 100644 --- a/src/main/overleafProtocol.ts +++ b/src/main/overleafProtocol.ts @@ -65,16 +65,21 @@ export function parseSocketMessage(raw: string): ParsedMessage | null { return null } case '6': { - // Ack: 6:::N+[jsonData] - const ackMatch = raw.match(/^6:::(\d+)\+([\s\S]*)/) - if (ackMatch) { + // Ack with data: 6:::N+[jsonData] + // Ack without data: 6:::N + const ackWithData = raw.match(/^6:::(\d+)\+([\s\S]*)/) + if (ackWithData) { try { - const data = JSON.parse(ackMatch[2]) - return { type: 'ack', id: parseInt(ackMatch[1]), data } + const data = JSON.parse(ackWithData[2]) + return { type: 'ack', id: parseInt(ackWithData[1]), data } } catch { - return { type: 'ack', id: parseInt(ackMatch[1]), data: null } + return { type: 'ack', id: parseInt(ackWithData[1]), data: null } } } + const ackNoData = raw.match(/^6:::(\d+)$/) + if (ackNoData) { + return { type: 'ack', id: parseInt(ackNoData[1]), data: null } + } return null } default: |
