Use NodePort 30843 instead of hostPort for WebSocket
- hostPort may be blocked by firewall rules - NodePort 30843 is in valid range (30000-32767) - Browser connects to external port 8443 - Router forwards 8443 -> ...
Add SSL configuration to k8s ConfigMap
- ConfigMap was missing SSL config from application.yml - Added server.ssl settings with environment variable support - Matches local application.yml configurat...
Use hostPort instead of NodePort for 8443
- NodePort range is 30000-32767, cannot use 8443 - Use hostPort to bind directly to host port 8443 - Removed service-websocket.yaml
WebSocket에 대한 MediaService 포트 8443에 연결
- media.kamocrm.com을 사용하는 웹 소켓 연결 업데이트 : 8443 - WebSocket 전용 트래픽을 우회 - MediaService에 직접 HTTPS/HTTP1.1 연결 사용 - API 호출은 Traefik을 통해 표준 경로를 계속 사용
Expose MediaService on port 8443 for WebSocket over HTTPS/HTTP1.1
- Added NodePort service on 8443 for direct WebSocket access (bypasses Traefik) - Mount wildcard-kamocrm-com SSL certificate - Init container converts PEM to PK...
HTTP/2 호환성을 위한 WebSocket-only 수송 제한 제거
- 브라우저 WebSocket API는 HTTP/2 (RFC 8441 구현되지 않음) 지원하지 않습니다. - Native WebSocket은 HTTP/1.1을 요구합니다. HTTP/2에 실패한 업그레이드 - SockJS 자동 선택 운송 (xhr-streaming/xhr-polling w...
Restore HTTP/2 for WebSockets (RFC 8441 support)
- WebSockets CAN work over HTTP/2 via RFC 8441 - Removed TLSOption (not needed) - Removed ServersTransport reference (let HTTP/2 work) - Restored simple domain-...
Use explicit Host() for /ws route to enable TLSOption
- Changed /ws route from HostRegexp to Host(media.kamocrm.com) - TLSOption can only be applied to explicit hosts (not regex) - ALPN negotiation happens during T...
Force HTTP/1.1 for MediaService ONLY via TLSOption
- Created media-tls-http1 TLSOption with alpnProtocols: [http/1.1] - Referenced ONLY in media-route IngressRoute - Does not affect other Traefik routes - Fixes ...
Revert "fix(traefik): disable idle timeout for WebSocket connections"
This reverts commit ****************
Separate /ws route for WebSocket, keep HTTP/2 for API
- Added two routes: /ws for WebSocket (higher priority), rest for API - Only /ws uses media-websocket-transport (HTTP/2 disabled) - API routes can use HTTP/2 fo...
Use Host() instead of HostRegexp() for media-route
- Simplified to Host(media.kamocrm.com) - Avoids regex escaping issues with backticks - Tests show route is working with simple Host match
Force HTTP/1.1 via TLSOption for WebSocket compatibility
- Created TLSOption to disable HTTP/2 ALPN negotiation - Forces browsers to use HTTP/1.1 for media.kamocrm.com - WebSocket upgrades require HTTP/1.1 protocol - ...
Disable idle timeout for WebSocket connections
- Added idleTimeout=0 to websecure entrypoint - Prevents Traefik from closing WebSocket connections due to inactivity - Fixes SockJS WebSocket timeout issues
WebSocket 전용 운송 (XHR 오염 가능)
- SockJS는 [websocket, xhr-streaming, xhr-polling]에서 [websocket]에 수송합니다 - XHR polling에 fallback 제거 - 힘 순수한 WebSocket 연결 - WebSocket이 분해 대신 작동하지 않는 경우 실패
Add CORS middleware to media-route for cross-origin WebSocket
- Added cors middleware to allow cross-origin connections - Enables WebSocket connections from internal.* to media.* - Allows all origins, methods, and headers ...
미디어에 WebSocket을 직접 연결하십시오.kamocrm.com
- 원래 접근으로 거꾸로: media.* subdomain에 직접 연결 - 불필요한 동일-origin 복잡성 제거 - 미들웨어에서 제거 /ws bypass (필요) - 내부 IngressRoute에서 제거 /ws 여정 - MediaService CORS는 이미 모든 원산지를 허용합니다....
Kamowsmedia-service에서 명시된 네임스페이스 참조 제거
- 두 서비스는 같은 네임스페이스(kamo)에 있습니다. - Explicit 네임스페이스 참조 필요 - 잠재적인 cross-namespace 문제점을 피하십시오
제거 /ws 다음에서 다시 쓰기. config (Trefik에 의해 처리)
- 다음 제거.js /ws 경로에 대한 재쓰기 - WebSocket routing은 Traefik IngressRoute 레벨에서 처리했습니다. - Traefik 경로 내부.kamocrm.com/ws -> 미디어서비스
Traefik을 통해 MediaService에 직접 경로 /ws 요청
- IngressRoute의 /ws 경로에 대한 전용 경로 추가 - 내부 노선.kamocrm.com/ws -> 미디어서비스 - 같은 ServersTransport를 WebSocket 지원용 미디어 루트로 사용합니다. - WebSocket 연결을 위한 Next.js를 우회합니다 (Next...
Auth 리디렉션없이 /ws WebSocket 엔드포인트 허용
- midware bypass에 /ws 경로 추가 - SockJS는 리디렉션 없이 /ws/info에 연결해야 합니다. - WebSocket 연결은 여전히 *** 쿠키가 있습니다. - WebSocket 연결 타임아웃 문제 수정
WebSocket 연결 변경
- media.kamocrm.com에서 동일한 기원으로 변경 (internal.kamocrm.com) - cross-origin WebSocket 연결 문제 방지 - Next.js가 MediaService에 proxy /ws에 규칙을 다시 씁니다. - 브라우저는 내부에 연결됩니다.kam...
WebRTC 엔드포인트에 대한 API 프록시 경로 추가
- MediaService에 /api/webrtc/config 프록시 추가 - Janus 인증에 대한 /api/webrtc/token 프록시 추가 - 추가 /api/webrtc/call/initiate, 대답, 엔드 프록시 - /api/media 프록시와 같은 패턴을 따릅니다. - ka...
Remove @kubernetescrd suffix from serversTransport reference
- Traefik error: cross-namespace format not allowed when crossnamespace disabled - IngressRoute and ServersTransport are in same namespace (kamo) - Use simple n...
GetDisplayMedia에서 잘못된 코드 속성 제거
- 간단한 영상 사용: 화면 공유를 위해 true - 빌드가 성공해야 함
빌드 오류 해결 - CallEnd로 PhoneOff 교체
- PhoneOff 아이콘은 @mui/icons-material에 존재하지 않습니다. - 올바른 MUI 아이콘 인 CallEnd 사용 - 사용하지 않는 중복 파일 제거 (ChatBoxWithWebRTC, VideoCallView, useJanusWebRTC) - 빌드가 성공해야 함
Signaling과 함께하는 피어 투 피어 웹RTC 완료
- Full Signaling 지원이 포함된 useWebRTC Hook 추가 - 통합 WebSocket 신호 (오프어, 답변, 얼음 후보자) - 답변/드코더 버튼으로 들어오는 콜 알림 추가 - call UI의 동적 높이로 ChatBox 업데이트 - UseChatWebSocket의 STO...
Add WebSocket signaling for peer-to-peer calls
- Added WebRTCSignalingController for call signaling - Handles offer/answer exchange via STOMP - Forwards ICE candidates between peers - Manages call hangup not...
오디오 / 비디오 통화에 대한 Janus WebRTC 통합 추가
- WebRTC 통화 관리용 useJanusWebRTC Hook 추가 - In-chat 비디오 디스플레이에 대한 VideoCallPanel 구성품 추가 - ChatBox와 원활한 통화 경험 통합 - 오디오 통화, 비디오 통화 및 스크린 공유 지원 - Proper 종횡비 (16 : 9) ...
Add Janus WebRTC integration
- Added WebRTCController for token generation and call management - Configured Janus API URL and secrets (api, token, admin) - Configured STUN/TURN servers (kam...
Update TURN server credentials with secure values
- Updated turn-secret with secure random value - Updated turn-password for Janus authentication - Credentials match MediaService WebRTC configuration
Split port ranges to avoid conflicts
- Coturn relay: 52000-65535 (13,536 ports) - Avoids: Janus RTP (10000-49151) and WireGuard (51820-51821) - No overlap between services
Adjust relay port range to avoid WireGuard/VPN ports
- Changed max-port from 65535 to 51800 to avoid conflicts - Avoids WireGuard on UDP 51820 and other VPN services on 51821 - Provides 2,649 ports (49152-51800) f...
Resolve CrashLoopBackOff by fixing probes and config
- Replace netstat-based health probes with TCP socket checks (netstat not available in coturn/coturn:latest Alpine image) - Remove conflicting no-stdout-log dir...
Use full Kubernetes CRD provider name for ServersTransport reference
Traefik requires the @kubernetescrd suffix when referencing CRD resources like ServersTransport.
Add ServersTransport deployment to CI/CD workflow
Deploy traefik/serverstransport.yaml as part of Traefik deployment to both K1M1 and K2M1. This enables HTTP/1.1 backend connections for MediaService WebSocket s...
Add ServersTransport for MediaService WebSocket connections
Add media-websocket-transport ServersTransport resource to disable HTTP/2 for backend connections to MediaService. This is required for proper WebSocket upgrade...
Simplify MediaService WebSocket IngressRoute configuration
Remove media-websocket-upgrade middleware that was forcing headers and causing WebSocket handshake issues. Traefik automatically handles WebSocket upgrade when ...
SockJS에서 WebSocket 운송 복원
- websocket 수송을 사용하여 재생 ( polling 아닙니다) - WebSockets는 표준이며 제대로 작동해야 합니다. - 실제 WebSocket 연결 문제 해결에 초점
SockJS에서 WebSocket 전송을 건너 HTTP/2 문제를 피하기 위해
- 웹소켓 대신 xhr-streaming 및 xhr-polling 수송을 사용합니다. - 이러한 전송은 WebSocket 향상을 필요로하지 않고 HTTP / 1.1 및 HTTP / 2와 함께 작동합니다. - HTTP / 2 확장 CONNECT 문제 및 업그레이드 헤더 전달 문제를 방지 ...
Add end anchor to WebSocket path regex pattern
- Add $ to end of PathRegexp to ensure exact match - Fixes regex parsing error in Traefik - /ws/info is now working (200 OK) but WebSocket upgrade route needs p...
Only apply WebSocket upgrade middleware to actual WebSocket paths
- Change route match from PathPrefix(/ws/) to **************** - /ws/info is a regular HTTP request, not a WebSocket upgrade - Adding Upgrade header to /ws/info...
Add Connection: Upgrade header to WebSocket upgrade middleware
- Add Connection: Upgrade header along with Upgrade: websocket - Both headers are required for proper WebSocket upgrade handshake - This ensures HTTP/2 Extended...
Add separate route for WebSocket paths with upgrade middleware
- Create separate route matching /ws/** paths with media-websocket-upgrade middleware - This ensures Upgrade: websocket header is added for WebSocket upgrade re...
Add media-websocket-upgrade middleware to force Upgrade header
- Add Upgrade: websocket header for WebSocket paths to fix HTTP/2 Extended CONNECT conversion - This ensures HTTP/2 WebSocket upgrade requests are properly conv...
Use ServersTransport to disable HTTP/2 for WebSocket connections
- Create ServersTransport resource with disableHTTP2: true - Reference ServersTransport in IngressRoute service configuration - Remove invalid disableHTTP2 fiel...
Disable HTTP/2 for MediaService backend connection
- Add disableHTTP2: true to force HTTP/1.1 for backend connections - HTTP/2 Extended CONNECT is not properly converting Upgrade header - WebSocket upgrades requ...
WebSocket 지원을위한 IngressRoute 서비스 계획 구성
- 설정 방식 : WebSocket 업그레이드에 대한 적절한 HTTP / 1.1 처리를 보장하는 HTTP - HTTP / 2 확장 CONNECT는 HTTP / 1.1 업그레이드 헤더에 적절한 변환을 필요로 - WebSocket Handhake에서 'Upgrade header: null'...
잘못된 handhake 핸들러를 제거하고 SockJS 구성 수정
- 잘못된 DefaultHandshakeHandler override 제거 (method는 존재하지 않습니다) - 잘못된 setSupressCors 호출 제거 (method가 존재하지 않습니다) - HttpSessionHandshakeInterceptor 를 로깅 Handhake 시도 ...