aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authoreunhhu <[email protected]>2026-10-04 15:25:26 +0100
committereunhhu <[email protected]>2026-10-04 15:25:26 +0100
commit872e3a60829744a231c6efdb3208d339cdb9e9d8 (patch)
treeba5057464c5c0cd86f463fa94bfed241410f1756 /docs
parent5ed4a62da32927cd8d1875e459073497bb2c006c (diff)
downloadpure-872e3a60829744a231c6efdb3208d339cdb9e9d8.tar.gz
pure-872e3a60829744a231c6efdb3208d339cdb9e9d8.zip
Push a view's value to its subscribers over SSE, once per group and interval (019)
Diffstat (limited to 'docs')
-rw-r--r--docs/design/008-module-format.md9
-rw-r--r--docs/design/019-pushing-views.md2
2 files changed, 10 insertions, 1 deletions
diff --git a/docs/design/008-module-format.md b/docs/design/008-module-format.md
index 63d260a..da9abd9 100644
--- a/docs/design/008-module-format.md
+++ b/docs/design/008-module-format.md
@@ -494,6 +494,15 @@ text·리스트가 남을 때만 위치를 유지한다.
아직 모듈 앱을 런타임 코어의 효과 단위로 세분하지는 않았다(`runtime.c`의 `definition`은 앱 전체다). 호스트가 직접 호출한다.
+**보기를 미는 길**([019](019-pushing-views.md)). 보기의 `GET`에 `Accept: text/event-stream`이면 그 연결은 구독자가 된다: 답의
+머리(`200`, `text/event-stream`)와 `retry: 1000`을 보내고, 요청을 읽던 연결 기록(약 6 KB)은 돌려주고 소켓과 구독(앱, 보기, 인자)만
+남는다. 같은 연결 스레드에서 같은 보기와 인자를 구독한 것들은 무리 하나다. 소유자가 스냅숏을 공개하면(구독자가 있을 때) 연결 스레드를
+깨우고, 스레드는 `--push-every-ms`(기본 10 ms)마다 많아야 한 번 무리마다 새 스냅숏을 한 번 계산해 값이 앞의 것과 다르면 `id: 스냅숏의
+바뀜 번호`와 `data:` 줄(값의 줄마다)을 무리의 구독자에게 보낸다. 값이 없으면 `event: none`과 그 까닭이다. 보내던 이벤트를 다 보내지
+못한 구독자에게는 새 값 하나만 기다리게 한다(그전 것은 바꾼다). 앱의 모듈이 바뀌면 같은 이름, 같은 종류의 보기로 이어 가고, 없으면
+끊는다. 앱이 멈추거나 토큰 파일이 그 구독의 토큰을 더 허락하지 않으면 끊는다. `--subscribers`(기본 65,536)가 스레드의 구독자 수를
+묶는다(넘으면 503 `busy`).
+
## 실행기 크기
실행기는 `-O2` text로 49.8 KB였다가 42.2 KB가 됐다. `module.c`가 34.0 → 27.0 KB, `module-list.c` 5.6 KB,
diff --git a/docs/design/019-pushing-views.md b/docs/design/019-pushing-views.md
index 3d4642f..e94fd61 100644
--- a/docs/design/019-pushing-views.md
+++ b/docs/design/019-pushing-views.md
@@ -1,6 +1,6 @@
# 019 — 보기를 미는 길 (SSE)
-작성일: 2026-10-04. 상태: 설계와 착수 기준(구현 전).
+작성일: 2026-10-04. 상태: 설계와 착수 기준. 1단계 구현, 검사로 고정했다.
[외부 리뷰 005](../outside-feedback/feedback-005.md)의 4장 (2) "실시간 클라이언트 푸시(SSE / WebSocket) 미지원"에서 시작한다.
## 문제