엔트리(Entry)의 망가진 실시간 변수와 리스트를 대체하는
강력한 실시간 동기화 확장 프로그램
엔트리(playentry.org)에서 프로젝트를 만들다 보면 실시간 변수와 실시간 리스트가 제대로 동기화되지 않는 문제를 자주 겪게 됩니다.
다른 탭이나 사용자에서 변경한 값이 반영되지 않거나, 아예 변수가 사라짐
리스트 항목이 중복되거나, 순서가 뒤섞이거나, 아예 빈 배열로 초기화됨
일정 시간이 지나면 동기화가 끊기고, 재연결이 제대로 되지 않음
Entry 자체 실시간 기능은 내부 구현이 복잡하고 디버깅이 어려움
Entry Sync는 Entry의 깨지기 쉬운 실시간 변수/리스트 시스템을 완전히 대체합니다. Supabase를 백엔드로 사용하여 안정적이고 빠른 실시간 동기화를 제공합니다.
?! 접두사가 붙은 변수의 값이 모든 탭과 사용자 간 실시간으로 동기화됩니다. 변경 즉시 Supabase DB에 저장되고 WebSocket으로 브로드캐스트됩니다.
?! 접두사가 붙은 리스트의 추가, 삭제, 삽입, 변경, 전체 설정 등 모든 연산을 실시간 동기화합니다. 리스트 연산은 직렬화되어 경합 조건(race condition)이 발생하지 않습니다.
Entry가 변수값을 0으로 초기화하는 버그를 자동 감지하여 랜덤 값으로 복구합니다. ?! 변수 또는 리스트가 0이 되면 1초 이내에 감지하여 복원합니다.
변수/리스트 변경을 차단하지 않고 허용한 후 변경사항을 전송합니다. Entry의 정상적인 작동을 방해하지 않으면서 동기화가 이루어집니다.
변경사항을 DB에 저장한 후 다시 읽어서(Read-After-Write) 실제 저장된 값으로 브로드캐스트합니다. 데이터 정합성을 보장합니다.
MV3 Offscreen Document에서 WebSocket을 유지하여 서비스 워커가 종료되어도 연결이 끊기지 않습니다. 브로드캐스트는 발신자 탭을 제외하고 전달되어 무한 루프를 방지합니다.
확장 프로그램의 데이터 흐름은 다음과 같습니다:
Chrome 웹 스토어에서 Entry Sync를 설치합니다.
https://playentry.org에서 엔트리 프로젝트를 엽니다.
변수 또는 리스트 이름 앞에 ?!를 붙입니다 (예: ?!score, ?!items).
여러 탭이나 다른 사용자와 동일한 프로젝트를 열면 자동으로 실시간 동기화됩니다.
?!score, ?!hp, ?!items, ?!message
?!로 시작하는 이름 → 실시간 동기화
score, hp, temp
?!가 없는 일반 이름 → 동기화 안 됨
?! 변수/리스트가 0이 되면 헬스체크가 자동으로 감지하여 랜덤 값(1000~9999)으로 복구합니다. 이는 Entry가 변수를 0으로 초기화하는 버그를 우회하기 위한 것입니다.
setValue
appendValue, deleteValue, insertValue, replaceValue, setArray
확장 프로그램 아이콘을 클릭하면 현재 동기화 상태와 ?! 변수/리스트 목록을
실시간으로 확인할 수 있습니다. 연결 상태(Connected/Disconnected)와 각 변수의
현재값, 리스트의 항목 수가 표시됩니다.