跳到正文
cccskills
免费在 GitHub 公开

nestjs-real-time

Implement WebSocket gateways with Socket.io and Server-Sent Events endpoints in NestJS. Use when building chat features, live feeds, or choosing between WebSocket and SSE for real-time communication.

中文简介正在准备中。当前显示原文说明。

集成工具Redis

实测评分 未实测

查看安装方法

包含的文件(3)

  • SKILL.md3.5 KB
  • evals/evals.json2.3 KB
  • references/example.md970 B

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Real-Time & WebSockets

Priority: P1 (HIGH)

Workflow: Add Real-Time Feature

  1. Choose protocol — WebSocket for bi-directional (chat, collab); SSE for uni-directional (feeds, notifications).
  2. Implement gateway or SSE — Create @WebSocketGateway() or @Sse() controller.
  3. Add auth — Validate JWT in handleConnection() for WebSocket; use standard guards for SSE.
  4. Scale — Add @socket.io/redis-adapter for multi-pod WebSocket; use HTTP/2 for SSE.
  5. Test connections — Verify WebSocket handshake auth rejects invalid tokens; confirm SSE streams data.

SSE Endpoint Example

See implementation examples

WebSocket Gateway with Auth Example

See implementation examples

Protocol Selection

  • WebSockets (Bi-directional): Use for Chat, Multiplayer Games, Collaborative Editing.
  • High Complexity: Requires custom scaling (Redis Adapter) and sticky sessions (sometimes).
  • Server-Sent Events (SSE) (Uni-directional): Use for Notifications, Live Feeds, Tickers, CI Log streaming.
  • Low Complexity: Standard HTTP. Works with standard Load Balancers. Easy to secure.
  • NestJS: Use @Sse('route') returning Observable<MessageEvent>.
  • Long Polling: Use only as fallback or for extremely low-frequency updates (e.g., job status check every 10m).
  • Impact: High header overhead. Blocks threads if not handled carefully.

WebSockets Implementation

  • Socket.io: Default choice. Features "Rooms", "Namespaces", and automatic reconnection. Heavy protocol.
  • Fastify/WS: Use ws adapter if performance critical (e.g., high-frequency trading updates) and you don't need "Rooms" logic.

Scaling (Critical)

  • WebSockets: In K8s, client connects to Pod . If Pod B emits event, client won't receive it.
  • Solution: Redis Adapter (@socket.io/redis-adapter). Every pod publishes to Redis; Redis distributes to all other pods.
  • SSE: Stateless. No special adapter needed, but aware of Connection Limits (6 concurrent connections per domain in HTTP/1.1; virtually unlimited in HTTP/2).
  • Rule: Must use HTTP/2 for SSE at scale.

Security

  • Handshake Auth: Standard HTTP Guards don't trigger on Ws connection efficiently.
  • Pattern: Validate JWT during handleConnection() lifecycle method. Disconnect immediately if invalid.
  • Rate Limiting: Sockets expensive. Apply strict throttling on "Message" events to prevent flooding.

Architecture

  • Gateway != Service: WebSocketGateway should only handle client comms (Join Room, Ack message).
  • Rule: Delegate business logic to Service or Command Bus.
  • Events: Use AsyncApi or SocketApi decorators (from community packages) to document WS events similarly to OpenAPI.

Anti-Patterns

  • No HTTP guards for WebSocket auth: Validate JWT in handleConnection(); HTTP guards don't trigger on WS.
  • No WebSocket at scale without Redis adapter: Without @socket.io/redis-adapter, cross-pod events lost.
  • No SSE over HTTP/1.1 at scale: Use HTTP/2 to avoid 6-connection-per-domain browser limit.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Upgrade an Android project to Android Gradle Plugin (AGP) 9. Use when migrating to AGP 9, updating Gradle build files, migrating to built-in Kotlin, or adopting the new AGP DSL.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Apply Clean Architecture layering, modularization, and Unidirectional Data Flow in Android projects. Use when setting up project structure, placing code in layers, configuring feature/core modules, or implementing UDF patterns; defer Compose state and ViewModel/StateFlow implementation to their specific skills.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Implement WorkManager and background processing correctly on Android. Use when creating Worker classes, scheduling tasks, choosing between WorkManager and Foreground Services, or setting up Hilt in workers; defer FCM and notification delivery to android-notifications.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Build high-performance declarative UI with Jetpack Compose. Use when writing Composable functions, optimizing recomposition, hoisting state, or working with LazyColumn and side effects; defer deep-link and navigation routing to android-navigation.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Migrate an Android XML View to Jetpack Compose following a structured 10-step workflow. Use when converting XML layouts to Compose, setting up Compose in an existing View-based project, or incrementally adopting Compose.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

Write correct coroutine scopes, lifecycle collection, and dispatcher injection in Android production code. Use for suspend functions, coroutine scopes, and dispatcher mechanics; defer ViewModel StateFlow/LiveData architecture, Fragment lifecycle recipes, persistence/notifications, and unit-test recipes to their specific skills.

中文简介正在准备中。当前显示原文说明。

HoangNguyen0403/agent-skills-standard5812026年10月24日 更新

查看 HoangNguyen0403 的全部技能

报告此技能的问题