プロジェクト

全般

プロフィール

バグ #744

未完了

WebSocket機能実装 - リアルタイム監視・更新 (子チケット)

Redmine Admin さんが約7時間前に追加. 23分前に更新.

ステータス:
新規
優先度:
高め
担当者:
-
開始日:
2025-06-26
期日:
進捗率:

0%

予定工数:

説明

WebSocket機能実装 - リアルタイム監視・更新

🎯 概要

システムメトリクス・ログ・アラートのリアルタイム配信機能をWebSocketで実装します。

📋 実装対象

1. WebSocket エンドポイント

  • ws://infra.call2arm.com/ws - WebSocket接続
  • チャンネル購読システム
  • メッセージタイプ別ハンドリング
  • 認証・セッション管理

2. 主要関数

  • handleWebSocketConnection(ws: WebSocket, req: Request): void
  • authenticateWebSocketConnection(ws: WebSocket, token: string): Promise<boolean>
  • broadcastToAllClients(data: any): void
  • broadcastSystemMetrics(metrics: SystemMetrics): void
  • sendWebSocketMessage(ws: WebSocket, type: string, data: any): void

3. UI コンポーネント

  • WebSocketProvider - WebSocket接続プロバイダー
  • useWebSocket - WebSocketカスタムフック
  • RealTimeMonitoringCard - リアルタイム監視カード
  • LiveLogViewer - ライブログビューア
  • ConnectionStatus - 接続状況表示

🔧 技術仕様

リアルタイム更新対象

  • システムメトリクス (30秒間隔)
  • Dockerコンテナ状態変更
  • ログエントリ追加
  • アラート発生
  • バックアップ進捗状況

メッセージタイプ

  • system_metrics_update - システムメトリクス更新
  • container_event - コンテナイベント
  • log_entry - ログエントリ追加
  • alert_notification - アラート通知
  • backup_progress - バックアップ進捗

接続管理

  • 自動再接続機能
  • ハートビート・Ping/Pong
  • チャンネル購読管理
  • 接続数制限・レート制限

✅ 完了条件

  • WebSocketサーバー実装完了
  • WebSocket関数群実装完了
  • リアルタイム更新UI実装完了
  • メッセージブロードキャスト機能動作確認
  • 接続管理機能動作確認

🔗 関連チケット

親チケット: インフラヘルパーサービス基盤構築

📅 期限

Phase 1 - 基盤実装: 2025年6月30日まで

Redmine Admin さんが23分前に更新

📋 WebSocket機能実装 - 現状・詳細仕様追記

🔍 現在の実装状況

WebSocket エンドポイント実装状況 (/ws)

エンドポイント 実装状況 メッセージタイプ 説明
/ws 📋 設計完了 auth, subscribe, ping WebSocket接続
/ws/system-metrics 📋 設計完了 system_metrics_update システムメトリクス配信
/ws/docker-events 📋 設計完了 container_update, image_update Docker イベント配信
/ws/logs 📋 設計完了 log_update, log_stream ログリアルタイム配信
/ws/alerts 📋 設計完了 alert, critical_alert アラート配信
/ws/notifications ⭕ 未着手 notification 通知配信

関数実装状況 (0/13 開発中、13/13 設計完了、0/13 未着手)

ファイル: /src/services/websocket/WebSocketService.ts

📋 WebSocket接続管理 (設計完了)

// 接続・認証管理 - 設計完了
handleWebSocketConnection(ws: WebSocket, req: Request): void  // 設計完了
authenticateWebSocketConnection(ws: WebSocket, token: string): Promise<boolean>  // 設計完了
handleWebSocketMessage(ws: WebSocket, message: any): void  // 設計完了
sendWebSocketMessage(ws: WebSocket, type: string, data: any): void  // 設計完了
processSubscription(ws: WebSocket, channels: string[]): void  // 設計完了

📋 ブロードキャスト機能 (設計完了)

// メッセージ配信 - 設計完了
broadcastToAllClients(data: any): void  // 設計完了
broadcastToUser(userId: string, data: any): void  // 設計完了
broadcastSystemMetrics(metrics: SystemMetrics): void  // 設計完了
broadcastContainerUpdate(containerEvent: ContainerEvent): void  // 設計完了
broadcastLogUpdate(logEntry: LogEntry): void  // 設計完了
broadcastAlert(alert: AlertData): void  // 設計完了

📋 接続管理機能 (設計完了)

// 接続管理 - 設計完了
getActiveConnections(): WebSocketConnection[]  // 設計完了
closeConnection(connectionId: string): void  // 設計完了
cleanupInactiveConnections(): void  // 設計完了

🔧 技術仕様詳細

リアルタイム更新対象 (設計完了)

  • ✅ システムメトリクス (30秒間隔)
  • ✅ Dockerコンテナ状態変更
  • ✅ ログエントリ追加
  • ✅ アラート発生
  • ✅ バックアップ進捗状況

メッセージタイプ (設計完了)

  • system_metrics_update - システムメトリクス更新
  • container_event - コンテナイベント
  • log_entry - ログエントリ追加
  • alert_notification - アラート通知
  • backup_progress - バックアップ進捗

接続管理 (設計完了)

  • ✅ 自動再接続機能
  • ✅ ハートビート・Ping/Pong
  • ✅ チャンネル購読管理
  • ✅ 接続数制限・レート制限

📈 進捗サマリー

  • WebSocketエンドポイント: 0/5 (0%) 開発中、4/5 (80%) 設計完了、1/5 (20%) 未着手
  • WebSocket関数: 0/13 (0%) 開発中、13/13 (100%) 設計完了、0/13 (0%) 未着手
  • UI コンポーネント: 要実装
  • メッセージブロードキャスト: 設計完了
  • 接続管理: 設計完了

WebSocket機能は関数レベルで100%設計完了!通知配信エンドポイントのみ未着手。実装準備完了状態!

他の形式にエクスポート: Atom PDF