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
HTTP/2 호환성을 위한 WebSocket-only 수송 제한 제거
- 브라우저 WebSocket API는 HTTP/2 (RFC 8441 구현되지 않음) 지원하지 않습니다. - Native WebSocket은 HTTP/1.1을 요구합니다. HTTP/2에 실패한 업그레이드 - SockJS 자동 선택 운송 (xhr-streaming/xhr-polling w...
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 ...
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이 분해 대신 작동하지 않는 경우 실패
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...
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) - 빌드가 성공해야 함
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.
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 전송을 건너 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...
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 시도 ...
Add WebSocket handshake logging and SockJS configuration
- Add handshake handler and interceptor logging to diagnose WebSocket connection issues - Configure SockJS to suppress CORS (handled by Spring Security) and dis...
SockJS는 HTTP/2 WebSocket 향상 문제를 처리하기 위하여 수송을 형성합니다
- WebSocket을 선호하는 SockJS 수송 순서를, 그 후에 xhr-streaming/xhr-polling에 fallback 구성하십시오 - HTTP / 2 WebSocket 업그레이드가 실패할 수 있으므로 SockJS는 HTTP / 1.1 호환 전송으로 자동으로 삭제됩니다. -...
Remove media-cors middleware from IngressRoute to allow WebSocket connections
- media-cors middleware was clearing CORS headers which interfered with WebSocket upgrades - WebSocket connections require direct pass-through without header mo...
Remove invalid Spring Security pattern /ws/**/info
- PatternParseException: No more pattern data allowed after {*...} or ** - /ws/** already covers all paths under /ws including /ws/info - This was causing 500 e...
Apply media-cors middleware to MediaService IngressRoute
- Apply media-cors middleware to allow CORS headers for WebSocket connections - Matches the pattern used for theme domains
Explicitly permit OPTIONS requests for CORS preflight
- Add explicit permit for OPTIONS method on all paths - Add explicit permit for /ws/info endpoint (SockJS handshake) - This ensures CORS preflight requests reac...
Make CORS configuration more permissive for WebSocket connections
- Explicitly handle '*' wildcard for origins, methods, and headers - Add WebSocket-related headers to exposed headers - Add logging to verify CORS configuration...
Add logging and configure SockJS heartbeat/disconnect settings
- Add logging to verify WebSocket endpoint registration - Configure SockJS heartbeat and disconnect delay - This should help diagnose why SockJS handshake isn't...
Revert IngressRoute changes - Traefik handles WebSocket automatically
다음의 메시지 경로가 인식됩니다.js
- 경로를 확인하기 위해 로그인이 추가되었습니다. - Route 파일이 존재하고 구조는 Next.js 15에 대한 정확합니다
STOMP의 non-existent 'active' 속성 제거 고객 로그인
- 주식 클라이언트는 'active' 속성이 없습니다. - 올바른 상태 인 'connected' 속성 만 확인
STOMP 클라이언트에서 unsupported onWebSocketError 핸들러 제거
- onWebSocketError는 ClientOptions에서 유효한 속성이 아닙니다. - SockJS 오류 핸들러 (onerror, onclose) 이미 오류 처리 제공
종합 WebSocket 오류 처리 및 로깅 추가
- SockJS 오류 핸들러 추가 (오픈, onerror, onclose) 연결 실패 - 연결 시간 검출 추가 (10 초) 침묵 장애 식별 -에 추가WebSocketError handler 에 STOMP 클라이언트 - WebSocket 연결이 설치되지 않는 이유를 진단하는 향상된 로깅 ...
Remove duplicate WebSocket endpoint registration and improve logging
- Removed duplicate /ws endpoint registration (SockJS already handles native WebSocket) - Added null check for payload in subscribeToSession - This may fix WebS...
Remove invalid Spring Security path pattern /ws/**/websocket
- Spring Security does not allow path segments after /** pattern - /ws/** already matches all paths under /ws including websocket endpoints - This fixes Pattern...
Incorrect 제거 HTTPS 에이전트 운동
- 인증서 유효성을 우회한 변경 - 인증서는 자동 인증 서비스(Let's Encrypt)에 의해 발급되며, 자기 서명되지 않습니다. - 인증서 유효성 검사가 실패한 이유를 조사해야합니다