셀 점유 원장 서버 + world.js 연동
개요
CrownyOS 3D 월드데스크톱의 셀 정착(점유)을 localStorage 데모에서 실제 서버 PSV로 영속화.
무엇을 했는지
- 셀원장서버.한선 신규 작성 — 순수 한선씨 TCP HTTP 서버 (포트 9935)
- 가져오기: 네트워크.한선, 날짜.한선, 셀원장.한선
- 라우트: GET /api/cells, GET /api/cell?addr=, GET /api/claim?addr=&owner=&type=
- CORS preflight (OPTIONS) 지원
- TCP읽기(연결, 16384) — 버퍼 사이즈 필수 (미지정 시 즉시 0 반환하는 VM 동작)
- world.js 패치 — 정착 섹션 외과 수정
-
loadClaims(): 서버 /api/cells → claims 캐시 갱신 (초기화 시 1회)
-
claimHere(): 서버 /api/claim → 성공 시 로컬 반영, 실패 시 alert
- 서버 미응답 시 localStorage 폴백 유지
관련 파일
/Users/ef/CrownyOS/시작화면/셀원장서버.한선 — 서버 소스
/Users/ef/CrownyOS/시작화면/world.js — 연동 패치
/Users/ef/CrownyOS/시작화면/data/cells.psv — PSV 원장
/tmp/셀원장서버.toau — 컴파일 바이너리
/Users/ef/CrownyOS/crownyc/libs/셀원장.한선 — 원장 라이브러리
핵심 발견 (VM 함정)
- TCP읽기 버퍼 필수:
TCP읽기(연결) → 즉시 0 반환. TCP읽기(연결, 16384) → 정상 블로킹 수신.
뱅크 서버 등 기존 패턴 참조 (crownyc/libs 제외, 실제 사용 서버 소스에서 발견).
포트
- cell-ledger: 9935 (crowny-ports 등록 완료)
잔여 이슈
- 서버가 /dev/null stdin으로 데몬화 필요 (현재 백그라운드 수동 기동)
- URL 인코딩 디코딩 미구현 (셀주소가 알파벳+# 이라 현재는 무관)
- owner 이름 인증 없음 (데모 단계)