本文へ移動
cccskills
無料GitHub で公開日本語紹介

building-websocket-server

チャットやライブ画面など、双方向にすぐ届く通信を支えるWebSocketサーバーを設計し、接続認証や配信、複数台での連携を組み立てるスキルです。

原文原文の説明を見る

Build scalable WebSocket servers for real-time bidirectional communication. Use when enabling real-time bidirectional communication. Trigger with phrases like "build WebSocket server", "add real-time API", or "implement WebSocket".

jeremylongshore/tons-of-skills-marketplaceスター 2,884(GitHub 2,884 + cccskills 0)
連携ツールRedis

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • リアルタイム通信を追加したいとき
  • 複数ルームのチャットを作りたいとき
  • ライブダッシュボードを構築するとき
  • 共同編集の変更を配信したいとき

日本語での紹介

できること

既存のHTTPサーバーにWebSocket接続を追加し、クライアントとサーバーが双方向にリアルタイム通信する仕組みを組み立てます。ws、Socket.IO、またはフレームワーク標準のWebSocket機能を使い、接続時のJWTやセッションによる認証、接続中のクライアント管理、JSON形式のメッセージ、ルームやチャンネルへの参加・退出を設計します。Ping/Pongによる応答確認で切断済みの接続を整理し、RedisのPub/Sub(配信を複数サーバーに共有する仕組み)でサーバー間の配信を扱います。

こんなときに便利

チャット、ライブダッシュボード、共同編集など、画面を更新し続けなくてもサーバーから情報を届けたい機能の開発に向いています。接続数やメッセージ量を監視しながら、複数台構成への拡張も考えられます。

使い方の例

  • 「既存のHTTPサーバーに認証付きのWebSocket接続を追加してください」
  • 「チャンネル別にメッセージを配信するチャットサーバーを設計してください」
  • 「Redisを使って複数サーバー間で配信を共有してください」

注意点

Node.js 18以降、Python 3.10以降、またはGoと対応ライブラリが必要です。Redisによる複数台構成ではRedisとPub/Subアダプターが必要です。ロードバランサーのWebSocket対応や認証方式も設定します。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(4)

  • SKILL.md5.1 KB
  • references/errors.md1.0 KB
  • references/examples.md8.2 KB
  • references/implementation.md1.5 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Building WebSocket Server

Overview

Build scalable WebSocket servers for real-time bidirectional communication using the ws library, Socket.IO, or native framework WebSocket support. Handle connection lifecycle management, room/channel subscriptions, message broadcasting, heartbeat keepalive, and horizontal scaling with Redis pub/sub adapters.

Prerequisites

  • Node.js 18+ with ws or socket.io, or Python 3.10+ with websockets or FastAPI WebSocket, or Go with gorilla/websocket
  • Redis for horizontal scaling with pub/sub adapter (Socket.IO Redis adapter, or manual pub/sub)
  • Load balancer configured for WebSocket upgrade (sticky sessions or proper Upgrade header forwarding)
  • JWT or session-based authentication for connection handshake
  • Monitoring for active connection counts and message throughput

Instructions

  1. Examine existing HTTP server configuration using Read and Grep to determine the framework and identify where WebSocket upgrade handling integrates.
  2. Create a WebSocket server instance attached to the existing HTTP server, configuring the upgrade path (e.g., /ws, /socket.io) and allowed origins.
  3. Implement connection authentication by validating JWT tokens or session cookies during the WebSocket handshake upgrade event, rejecting unauthorized connections before protocol switch.
  4. Build a connection registry that tracks active clients with metadata (user ID, subscribed channels, connection time) for targeted message delivery.
  5. Define a message protocol using JSON envelopes with type, channel, payload, and correlationId fields for structured bidirectional communication.
  6. Implement room/channel subscription logic allowing clients to join and leave named channels with server-side membership tracking.
  7. Add heartbeat ping/pong mechanism with configurable interval (default 30s) and timeout detection to clean up stale connections.
  8. Configure Redis pub/sub adapter for horizontal scaling so messages broadcast from any server instance reach all connected clients across the cluster.
  9. Write connection lifecycle tests covering connect, authenticate, subscribe, message exchange, reconnect, and graceful disconnect scenarios.

See references/implementation.md for the full implementation guide.

Output

  • ${CLAUDE_SKILL_DIR}/src/ws/server.js - WebSocket server setup and upgrade handling
  • ${CLAUDE_SKILL_DIR}/src/ws/handlers/ - Per-message-type handler functions
  • ${CLAUDE_SKILL_DIR}/src/ws/rooms.js - Room/channel subscription management
  • ${CLAUDE_SKILL_DIR}/src/ws/registry.js - Active connection tracking registry
  • ${CLAUDE_SKILL_DIR}/src/ws/heartbeat.js - Ping/pong keepalive logic
  • ${CLAUDE_SKILL_DIR}/src/ws/adapters/redis.js - Redis pub/sub adapter for scaling
  • ${CLAUDE_SKILL_DIR}/tests/ws/ - WebSocket connection and messaging tests

Error Handling

ErrorCauseSolution
401 during upgradeJWT token missing or expired in handshake query/headersReject upgrade with HTTP 401 before WebSocket protocol switch completes
1008 Policy ViolationClient sends malformed message or violates protocolSend close frame with code 1008 and human-readable reason; log violation
1006 Abnormal ClosureNetwork interruption without close handshakeDetect via heartbeat timeout; clean up connection registry; notify room members
Memory leakConnection registry grows unbounded from stale entriesImplement heartbeat-based cleanup sweep every 60s; enforce max connections per server
Message stormSingle client flooding messages beyond acceptable rateApply per-connection message rate limiting; disconnect abusive clients with 1008

Refer to references/errors.md for comprehensive error patterns.

Examples

Chat application: Multi-room chat server where clients join named rooms, receive member presence updates, and see real-time message delivery with typing indicators via separate message types.

Live dashboard: Server pushes metric updates to subscribed dashboard clients every second, with initial state snapshot on connection and incremental deltas thereafter.

Collaborative editing: Operational transformation relay server that receives edit operations from clients, transforms against concurrent operations, and broadcasts resolved changes to all document subscribers.

See references/examples.md for additional examples.

Resources

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

abridge-ci-integration

無料概要あり

Abridge連携コードのCIに合成データを使った回帰チェックを加え、同意状態、ノート確認、ログの秘匿、ロールバックなど顧客側の処理を検証します。

  • Abridge連携の回帰テストを追加したいとき
  • 同意やノート確認の処理を検証したいとき
  • ログに機微情報が出ないか確かめたいとき
jeremylongshore/tons-of-skills-marketplace2,8842026年10月29日 更新

abridge-common-errors

無料概要あり

Abridgeの録音、記録の確認、Epicへの引き渡し、アクセスの不具合を観測情報から切り分け、患者情報を抑えた証拠と担当窓口への引き継ぎ資料を整理するスキル。

  • 録音とアップロード障害の切り分け
  • 記録生成の遅延や編集画面の不具合調査
  • Epic連携障害の担当窓口の特定
jeremylongshore/tons-of-skills-marketplace2,8842026年10月29日 更新

abridge-core-workflow-a

無料概要あり

同意確認から録音、生成メモの根拠確認、編集、最終確定まで、臨床文書作成の手順と確認ポイントを整理するスキルです。

  • 診療メモ作成の手順を導入・監査したいとき
  • 同意から医師の確認までの流れを整理したいとき
  • 下書きの根拠確認と停止条件を定めたいとき
jeremylongshore/tons-of-skills-marketplace2,8842026年10月29日 更新

abridge-core-workflow-b

無料概要あり

Abridgeで臨床家が確認した記録内容が、承認済みの手順でEpicの適切なテンプレート欄へ渡るか、テスト記録を使って対応関係や例外を検証するスキルです。

  • AbridgeとEpicの記録欄の対応を確認したいとき
  • 部門ごとの連携設定を監査したいとき
  • 承認済みテスト記録で連携を検証したいとき
jeremylongshore/tons-of-skills-marketplace2,8842026年10月29日 更新

abridge-cost-tuning

無料概要あり

Abridgeの導入・更新判断に向け、利用定着率や業務の完了状況、診療記録の品質、支援負担を契約に基づく費用情報と照らし、継続や改善の選択肢を整理するスキル。

  • Abridge導入後の定着率確認
  • 契約更新の判断材料をまとめたいとき
  • 診療環境ごとの業務成果の比較
jeremylongshore/tons-of-skills-marketplace2,8842026年10月29日 更新

abridge-debug-bundle

無料概要あり

Abridgeの障害調査で、録音や診療記録を含めず、許可した項目だけを集めたサポート用資料と確認用マニフェストを作成します。

  • 障害サポート用の証拠をまとめたいとき
  • 共有資料の除外項目を記録したいとき
  • 調査情報を安全な経路で引き継ぎたいとき
jeremylongshore/tons-of-skills-marketplace2,8842026年10月29日 更新

jeremylongshore のスキルをすべて見る

このスキルの問題を報告する