realtime-collaborative
Engineering patterns for building multiplayer, real-time sync, and collaborative applications using WebSockets, WebRTC, and CRDTs.
来源信息
- 仓库
- skeletorflet/opencode-kit
- 最近来源活动
- 2026年4月1日 13:09
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 9
- Forks
- 1
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- realtime-collaborative
- description
- Engineering patterns for building multiplayer, real-time sync, and collaborative applications using WebSockets, WebRTC, and CRDTs.
# Realtime Collaborative Patterns
This skill applies to applications that require instant state synchronization across multiple clients, such as collaborative document editors, live dashboards, or chat applications.
## 1. Conflict-Free Replicated Data Types (CRDTs)
When building collaborative editors (text, canvas, standard fields), use CRDTs to prevent race conditions instead of standard Operational Transformation (OT).
- **Recommended Libraries:** `Yjs`, `Automerge`, or `Liveblocks`.
- **Implementation Rules:** Ensure the source of truth is the CRDT instance, with UI components binding to the CRDT observer methods, not standard local state.
## 2. Scaling WebSockets
For applications requiring massive real-time concurrency:
- **Stateless Services:** Keep WebSocket gateways completely stateless. Push connection state to standard Redis (PubSub) or equivalent managed event busses.
- **Broadcasting:** Target broadcasts to specific channels or namespaces (e.g., `room-id:1234`) to minimize unnecessary client traffic.
- **Heartbeats:** Always implement a rigorous ping/pong heartbeat interval (e.g., 30s) to prune broken, un-closed TCP connections.
## 3. Optimistic UI Updates
Users should feel zero latency.
- Provide immediate UI feedback by locally applying mutations the instant the user interacts.
- Store the original state before the mutation.
- Fire the asynchronous request to the server/socket.
- **Rollback:** If the socket responds with an error, silently revert the UI component state back to the original payload via your state manager.
## 4. Presence and Awareness
- Abstract User Cursors and "User is Typing" features into an `awareness` protocol distinct from your data layer. This traffic runs frequently (often every few ms) and should not clutter persistence databases.
在 GitHub 查看