操作
バグ #744
未完了WebSocket機能実装 - リアルタイム監視・更新 (子チケット)
ステータス:
新規
優先度:
高め
担当者:
-
開始日:
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%設計完了!通知配信エンドポイントのみ未着手。実装準備完了状態!
操作