すべてのWebRTC APIリクエストをポート 8443 にルートする
- すべてのWebRTC APIのルートをmedia.{domain}:8443に更新 - WebRTC エンドポイントで Traefik を使用しないでください。 - メディア API と WebSocket の設定をマッチ
ポートへのすべてのメディアサービス要求をルート 8443 (Traefik をバイパス)
- メディアを使用するすべてのメディア API ルートを更新します。{domain}:8443 - MediaService の Traefik を使用していない - API と WebSocket の両方がポート 8443 に直行 - 内部.{domain} は、以前のように Traefik を続けて
NodePort 30843にルーティングするポート8443(外部)に接続
- ルーターは外的な 8443 を k1m1 NodePort 30843 に先にします - ブラウザはmedia.kamocrm.comを使用しています:8443 - 内部NodePortは30843 (Kubernetesの有効な範囲)です
MediaService ポート 8443 を WebSocket に接続
- Media.kamocrm.comを使用するWebSocket接続を更新:8443 - WebSocket専用トラフィックのTraefikを回避 - 直接 HTTPS/HTTP1.1 接続を MediaService に使用 - API 呼び出しは、Traefik を介して標準パスを使用して継続します
HTTP/2 の互換性のための WebSocket のみの輸送制限を削除します
- ブラウザのWebSocket APIはHTTP/2(RFC 8441は実装していません)をサポートしていません - ネイティブWebSocketはHTTP / 1.1が必要です HTTP/2で失敗するアップグレード - SockJS自動選択トランスポート(xhr-streaming/xhr-polling は HT...
WebSocket専用トランスポート(XHRポーリング不可)
- [websocket, xhr-streaming, xhr-polling] から [websocket] に SockJS の転送を変更しました。 - XHR ポーリングにフォールバックを削除します。 - 純粋なWebSocket接続を強制する - WebSocketが劣化の代わりに動作しない場合は、高速失敗
WebSocketをmedia.kamocrm.comに直接接続する
- 元のアプローチに逆転させる:媒体に直接接続して下さい。* サブドメイン - 不要な同オリジンの複雑さを削除 - /wsをミドルウェアからバイパス(不要) - 内部IngressRouteから/wsルーティングを削除 - MediaService CORSは既にすべての起源を可能にします - シンプルでクリーンなソリ...
Kamowsmedia-serviceから明示的な名前空間参照を削除します
- どちらのサービスは同じ名前空間(kamo)にあります - 明示的な名前空間参照は必要ありません - 潜在的なクロスネームスペースの問題を避けます
/ws を次から書き直します。 config (Traefik によって処理される)
- 削除された Next.js は /ws パスのために書き直します - Traefik IngressRouteレベルで処理されるWebSocketルーティング - Traefik は内部.kamocrm.com/ws をルートします。 メディアサービス
ルート/wsは、Trefik経由でMediaServiceに直接リクエストをリクエスト
- IngressRouteで/wsパスの専用ルートを追加 - ルート内部.kamocrm.com/ws -> メディアサービス - WebSocketサポート用のMedia-routeと同じ ServersTransportを使用する - WebSocket接続用のNext.jsをバイパスします(Next.jsはWS...
/ws WebSocket が auth リダイレクトなしでエンドポイントを許可する
- ミドルウェアバイパスに /ws パスを追加 - SockJSはリダイレクトなしで/ws/infoに接続する必要があります - WebSocket接続は、まだ***クッキーを持っています - WebSocket接続タイムアウトの問題を修正
WebSocketの接続を同じoriginに変更する
- media.kamocrm.comから同じ起源に変更(internal.kamocrm.com) - クロスオリジンWebSocket接続の問題を回避 - Add Next.jsは、メディアサービスにプロキシ/wsにルールを書き換える - ブラウザは内部.kamocrm.com/ws に接続します - Next.j...
WebRTC エンドポイントの API プロキシ ルートを追加します
- MediaService に /api/webrtc/config プロキシを追加 - Janus認証用の/api/webrtc/tokenプロキシを追加 - /api/webrtc/call/initiate、応答、エンドプロキシを追加 - /api/mediaプロキシと同じパターンに従う - kamo-inte...
GetDisplayMediaから無効なコーダプロパティを削除します
- シンプルなビデオを使用して:画面共有のためにtrue - ビルドが成功する
ビルドエラーを解決する - PhoneOff を CallEnd に置き換える
- PhoneOff アイコンは @mui/icons-material に存在しません - 正しいMUIアイコンであるCallEndを使用する - 未使用の重複ファイル(ChatBoxWithWebRTC、VideoCallView、JanusWebRTC)を削除 - ビルドが成功する
完全なピアツーピアWebRTCは、シグナル伝達と呼びます
- 完全なシグナル伝達サポートと追加されたuseWebRTCのホック - 統合されたWebSocketのシグナル伝達(オファー、回答、ICE候補) - 回答/デコーダーボタンで着信通知を追加 - 通話UIの動的高さでチャットボックスを更新 - シグナル伝達のためのuseChatWebSocketからSTOMPクライアン...
Janus WebRTC 統合を音声/ビデオ通話に追加
- WebRTCコール管理用のJanusWebRTCホックを追加 - チャットビデオディスプレイ用のVideoCallPanelコンポーネントを追加 - シームレスなコール体験のためのチャットボックスと統合 - 音声通話、ビデオ通話、画面共有のサポート - ビデオ表示のための適切なアスペクト比(16:9) - コールコ...
SockJSでWebSocket輸送を復元
- websocketの輸送(ポーリングしない)の使用に逆転させる - WebSocketsは標準であり、正しく動作する必要があります - 実際のWebSocket接続の問題の修正に焦点を当てる
SockJS で WebSocket をスキップして HTTP/2 の問題を回避
- websocketの代わりにxhr-streamingとxhr-polling輸送を使用してください - これらのトランスポートは、WebSocketのアップグレードを要求することなくHTTP/1.1とHTTP/2の両方で動作します。 - HTTP/2拡張接続の問題を回避し、ヘッダーの転送の問題を改善 - /ws/...
HTTP/2 WebSocket アップグレードの問題を処理する SockJS トランスポートの設定
- WebSocketを好むSockJSの輸送順序を明示的に設定し、xhr-streaming/xhr-pollingにフォールバック - HTTP / 2 WebSocketのアップグレードが失敗する可能性があるため、SockJSはHTTP / 1.1互換輸送に自動的にフォールバックされます。 - これは、ブラウザが...
Next.js でメッセージのルートが認識されていることを確認します
- ルートがヒットしていることを確認するためにログを追加 - ルートファイルが存在し、構造はNext.js 15に正しい
STOMPから存在しない'active'プロパティを削除します クライアントロギング
- ストムプ クライアントは'active'プロパティを持たない - 正しい状態インジケータである「接続」プロパティのみをチェック
STOMP クライアントからサポートされていない onWebSocketError ハンドラを削除
- onWebSocketError は ClientOptions で有効なプロパティではありません - SockJSエラーハンドラ(onerror、onclose)は既にエラー処理を提供
包括的なWebSocketエラー処理とロギングを追加
- 接続障害をキャッチするためにSockJSエラーハンドラ(onopen、onerror、onclose)を追加 - 接続タイムアウト検知(10秒)を追加し、サイレント障害を特定 - STOMP クライアントに onWebSocketError ハンドラを追加 - WebSocket接続が確立されていない理由を診断する...
誤った HTTPS エージェントの回避
- 証明書の検証を迂回した変更を反転 - 証明書は、自己署名ではなく、自動証明書サービス(暗号化しましょう)によって発行されます - 証明書の検証が失敗する理由を調査する必要があります
自己署名証明書を受け入れるエージェントで HTTPS を使用してください
- 常にHTTPS(HTTPSではなく)を使用するように変換 - 未承認の HTTPS エージェントを追加: 自己署名された証明書の false - これは、https://media.kamocrm.comに接続するためのサーバー側Next.jsルートを可能にします - すべてのメディア API ルートに適用
SSL証明書の問題を回避するために、MediaServiceのKubernetesサービス名を使用する
- Server-side Next.js が使用できるようになりました。 - これは、https://media.kamocrm.comに接続するときに自己署名された証明書のエラーを回避します - クライアント側のリクエストはまだ外部 https://media.{domain} を使用します。 サイトマップ - セ...
古い /api/security/media/ のリクエストを傍受していたルートを削除します
- 古いルートは、もはやメディアエンドポイントがないAPIServiceに転送されました - すべてのメディアリクエストは、 /api/media/ から MediaService へ直接アクセスする - 削除:************************ - 削除:************************...
MediaServiceセッション作成用の詳細なエラーロギングを追加
- ログメディアサービス URL が呼び出される - ログ応答ヘッダー - フルエラーの詳細でエラーロギングを強化 - デバッグのためのエラー応答でURLを含める
他のNext.jsプロジェクトに合わせてアクション/checkout@v4に変換
- 掛かることを引き起こした複雑な手動チェックアウトロジックを削除します - kamo-loginおよびkamo-registerのような標準的な行為/checkout@v4を使用して下さい - Docker ビルドのコンテキストを env var ではなく . を使うように単純化 - k8sマニフェストアクセスのため...
掛かることを防ぐのにタイムアウトの浅いクローンを使用して下さい
- より速いクローニングのための --depth 1 を使用して下さい - タイムアウトを追加する(浅い120s、フルのための300s) - 浅い場合の完全なクローンへのフォールバック - 浅いクローンの後に必要に応じて特定のコミットをフェッチ
作業ディレクトリのエラーを回避するために、 git クローン前の有効なディレクトリに変更
- /tmpの変更または/ワークスペースの削除/クローン作成前に - ディレクトリのみが存在しているが git repo でないと削除する - '現在の作業ディレクトリのエラーを読み取りできない
Use hardcoded repository URL and set GITHUB_WORKSPACE env var
- Use direct repository URL to avoid DNS/hostname resolution issues - Set GITHUB_WORKSPACE environment variable for subsequent steps - Use env var in Docker bui...
Use git clone directly instead of relying on empty workspace
- Clone repository using git directly with repository URL - Handle both fresh clone and existing repository cases - Use working-directory for Docker build actio...
Simplify all checkout steps - remove git operations that hang
- Remove git fetch/reset/clean from deploy jobs - Forgejo runner already has code checked out - Just verify GITHUB_WORKSPACE is valid
Simplify checkout step - remove git clone that was hanging
- Remove git clone logic that was causing 20+ minute hangs - Forgejo runner already has code checked out, just verify directory - Remove unnecessary git fetch/r...
Improve checkout and Docker build context handling
- Add proper repository cloning if not already checked out - Verify Dockerfile exists before building - Use absolute paths for Docker build context - Fix workin...
Replace actions/checkout with manual git checkout to avoid DNS issues
- Replace actions/checkout@v4 with manual git checkout commands - Forgejo runner already has code checked out, just need to ensure clean state - Fixes DNS looku...
Add direct MediaService routes via media.{domain} for WebSocket support
- Create new /api/media/* routes that forward directly to media.{domain} - These routes bypass APIService to allow secure WebSocket connections - MediaService r...
Add logging for subscription request to backend
- Log when subscription request is sent to /app/chat/subscribe - Helps verify if subscription requests are reaching the backend
Add detailed logging for subscribe function
- Log when subscribe() is called and current connection state - Log client existence and connection status - Helps diagnose why subscriptions aren't being creat...
Add detailed WebSocket connection logging
- Enhanced logging for WebSocket connection success/failure - Log connection frame details on successful connection - Log detailed STOMP error information - Hel...
Extract large IDs from raw JSON to prevent JavaScript precision loss
- Extract memberID, userID, orgID, and securityOrgId from raw JSON string before parsing - Prevents precision loss for IDs > Number.MAX_SAFE_INTEGER (9007199254...