51 lines
2.1 KiB
Markdown
51 lines
2.1 KiB
Markdown
---
|
|
domain: go
|
|
last_rule_review_commit: 7ea0b484d2c5c73e85f4ef4b16cba20f25cb4b51
|
|
last_rule_updated_at: 2026-06-01
|
|
---
|
|
|
|
# go
|
|
|
|
## 목적 / 책임
|
|
|
|
Proto Socket의 Go 구현체를 담당한다. TCP/WS/WSS 서버·클라이언트, TLS 지원, 공통 Communicator 로직, 타입 헬퍼 함수를 제공한다.
|
|
|
|
## 포함 경로
|
|
|
|
- `go/*.go` — 핵심 구현 및 루트 패키지 테스트 (packets/ 제외)
|
|
- `go/test/` — 동일 언어 테스트
|
|
- `go/crosstest/` — 크로스 언어 테스트 (Dart.io, Dart.web, Kotlin, Python, TypeScript와 연동). 오케스트레이터 또는 클라이언트 헬퍼
|
|
- `go/go.mod`, `go/go.sum` — 모듈 의존성
|
|
- `go/examples/` — 사용 예제
|
|
|
|
## 제외 경로
|
|
|
|
- `go/packets/` — protocol 도메인
|
|
|
|
## 주요 구성 요소
|
|
|
|
- `TcpServer` / `TcpClient` — TCP 서버/클라이언트
|
|
- `WsServer` / `WsClient` — WS/WSS 서버/클라이언트
|
|
- `WsServerOptions` / `NewWsServerWithOptions` — browser client Origin 허용 등 WebSocket accept option 주입
|
|
- `Communicator` — 메시지 라우팅 및 요청-응답 상관관계 공통 로직
|
|
- `Transport` / `ParserMap` — 전송 추상화와 타입명 기반 파서 등록
|
|
- `AddListenerTyped`, `AddRequestListenerTyped`, `SendRequestTyped` — 타입 헬퍼
|
|
- `HeartbeatTimer` / `baseClient` — 하트비트 및 연결 종료 공통 처리
|
|
|
|
## 유지할 패턴
|
|
|
|
- `go test ./...`로 테스트 실행
|
|
- `ParserMap`으로 타입명 → 파서 함수 등록
|
|
- TLS 변형은 기본 구현과 같은 인터페이스 유지
|
|
- Dart.web 크로스 테스트 서버는 필요한 OriginPatterns를 `WsServerOptions`로 명시한다
|
|
- PacketBase의 `typeName`, `nonce`, `data`, `responseNonce` 의미는 PROTOCOL.md와 맞춘다
|
|
|
|
## 다른 도메인과의 경계
|
|
|
|
- **protocol**: packets/ 패키지를 import하지만, 패키지 내용은 protocol 도메인
|
|
- **dart/kotlin/python/typescript**: crosstest에서 상호 연동. Dart.web은 browser client runtime으로만 연동
|
|
|
|
## 금지 사항
|
|
|
|
- `go/packets/` proto 파일을 메시지 스키마 변경 목적으로 편집하지 않는다
|
|
- Communicator에 애플리케이션 도메인 로직(인증, 세션 등)을 추가하지 않는다
|