값을 즉시 반영
undefined 변경은 무시하고 selectedFile이 없으면 전송을 멈춥니다.
Monaco의 onChange는 즉시 UI를 바꾸지만, WebSocket 전파와 REST 저장은 서로 다른 실패 단위로 다뤄야 합니다.
undefined 변경은 무시하고 selectedFile이 없으면 전송을 멈춥니다.
fileId, userId, changes를 emit하고 ACK로 서버 거절을 확인합니다.
800ms 후 PATCH 요청을 보내고 실패는 재시도 가능한 상태로 보여줍니다.
| 경로 | 빠르게 해야 할 일 | 성공 기준 | 실패 처리 |
|---|---|---|---|
| Local화면 상태 | fileContent 갱신 | 에디터 값과 상태 일치 | 파일 미선택이면 중단 |
| Realtime협업 전파 | Socket.IO emit | ACK 또는 상대방 반영 | 연결 상태 배지와 재연결 |
| Persist영속 저장 | 이전 timer 취소 후 PATCH | 서버 버전 갱신 | 토스트, 재시도, 트리 재조회 |
실무 주의: 예제는 전체 텍스트를 changes로 보내지만, 실제 협업 편집은 OT나 CRDT delta로 충돌과 대역폭 문제를 줄이는 편이 안전합니다.