WebSocket Handshake
충전기(EVSE)가 CSMS에 WebSocket 연결을 수립할 때, HTTP 핸드셰이크 단계에서 반환될 수 있는 상태 코드와 그에 따른 조치 사항입니다.
핸드셰이크 응답 코드 요약
| HTTP 상태 코드 | 상태명 | 설명 |
|---|---|---|
| 101 | Switching Protocols | 핸드셰이크 성공, WebSocket 연결 수립 완료 |
| 400 | Bad Request | 잘못된 요청 형식 (CPID 누락, 프로토콜 헤더 오류 등) |
| 401 | Unauthorized | 인증 실패 (비밀번호 불일치, 인증 헤더 누락 등) |
| 406 | Not Acceptable | 미등록 충전기 또는 운영 정지 상태 |
| 409 | Conflict | 세션 충돌 (동일 CPID의 기존 세션 미종료) |
| 426 | Upgrade Required | TLS(WSS) 암호화 연결 필요 |
| 429 | Too Many Requests | 연결 요청 한도(Rate Limit) 초과 |
| 500 | Internal Server Error | CSMS 내부 일시적 오류 |
응답 코드별 상세 가이드
101 Switching Protocols (성공)
WebSocket 핸드셰이크가 성공적으로 완료되어 통신 세션이 수립되었습니다. 이후 OCPP 프레임 송수신을 진행합니다.
400 Bad Request
요청 헤더나 경로 형식이 올바르지 않은 경우 발생합니다:
- URL 경로에 포함된 CPID(Charge Point ID) 형식이 잘못되었거나 누락된 경우
Sec-WebSocket-Protocol헤더가 누락되었거나 지원하지 않는 프로토콜 버전을 지정한 경우 (예:ocpp1.6,ocpp2.1외 값)
401 Unauthorized
자격 증명 검증에 실패한 경우 발생합니다:
Authorization헤더가 누락되었거나 HTTP Basic Auth 표준 형식을 준수하지 않은 경우- Basic Auth의 사용자명(Username)과 URL 경로의 CPID가 일치하지 않는 경우
- Basic Auth 비밀번호가 CSMS에 등록된 비밀번호와 일치하지 않는 경우
- Security Profile 3 클라이언트 인증서가 이미 발급된 충전기가 하위 보안 등급(Security Profile 2)으로 접속을 시도한 경우
406 Not Acceptable
CSMS에 등록되지 않았거나 정상 운영이 불가한 충전기인 경우 발생합니다:
- CSMS 인프라 관리 시스템에 등록되지 않은 충전기 식별자인 경우
- 운영 정책상 일시 정지 또는 폐기 처리된 충전기인 경우
확인 사항
등록 정보(충전소 ID 및 EVSE ID)를 확인하고, 지속적으로 발생할 경우 운영 관리자에게 인프라 등록 상태를 문의하시기 바랍니다.
409 Conflict
동일한 CPID로 이미 활성화된 WebSocket 세션이 존재하는 경우 발생합니다:
- 네트워크 순단으로 인해 기존 연결이 CSMS 측에서 아직 타임아웃 종료 처리되지 않은 경우
- 충전기 재부팅 직후 이전 연결 세션이 완전히 정리되기 전에 재접속한 경우
- 다른 충전기에서 동일한 CPID로 잘못 연결을 시도하고 있는 경우
조치 방법
이전 세션 정리를 위해 수 초간 대기 후 재시도하십시오. 반복 발생 시 재접속 백오프 및 지터 정책에 따라 간격을 점진적으로 늘려 접속을 재시도해야 합니다.
426 Upgrade Required
TLS(보안 연결) 없이 일반 평문 WebSocket(ws://)으로 접속을 시도한 경우 발생합니다.
- SK일렉링크 CSMS는 Security Profile 2 이상을 요구하므로 반드시
wss://(TLS 암호화 연결)를 사용해야 합니다.
429 Too Many Requests
단시간 내 과도한 연결 요청이 발생하여 요청 제한(Rate Limit)에 걸린 경우 발생합니다:
- Rate Limit 초과: 동일 IP에서 1분 내 5회 이상 연결을 시도한 경우
- 동시 연결 수 초과: 동일 IP에서 허용된 최대 동시 연결 수를 초과한 경우
조치 방법
최소 60초 이상 대기 후 재시도하십시오. 반드시 재접속 시 백오프 및 지터 적용을 충전기 펌웨어에 구현하여 무한 재시도 루프로 인한 차단을 방지해야 합니다.
500 Internal Server Error
CSMS 내부 시스템의 일시적인 오류 또는 서비스 점검 중인 경우 발생합니다:
- 내부 연동 서비스 일시 지연 또는 예외 발생
- 시스템 유지보수 점검 시간대
조치 방법
지수 백오프 및 지터 알고리즘에 따라 재접속 간격을 점진적으로 늘려가며 재시도하시기 바랍니다.