# Socket.IO (/ko/docs/requests/socket-io)

Socket.IO 요청은 Socket.IO 서버에 연결해 네임스페이스에 참여하고 연결을 유지합니다. 이벤트를 전송하고 서버의 이벤트가 도착하는 대로 확인할 수 있습니다. Echolot은
WebSocket 위에서 Socket.IO 2, 3, 4를 지원합니다.

<Shot id="requests-socketio-events" alt="로컬 서버에 연결된 Realtime › Support chat: /support 네임스페이스가 있는 이벤트 탭, 저장된 Say hello 이벤트, 보낸 이벤트와 서버의 응답이 있는 로그" />

<Callout title="Alpenglow로 시험해 보기">
  **Realtime › Support chat**은 문서 저장소의 `examples/servers` 폴더에 있는 `localhost:3001`의 로컬 Socket.IO 서버에 연결합니다(`bun run realtime`).
</Callout>

## 연결 [#connect]

1. **파일 › 새로운 Socket.IO 요청**을 선택하거나, 사이드바의 **요청** 옆 **+** 메뉴에서 **새로운 Socket.IO 요청**을 선택합니다.
2. `http://localhost:3001`(Alpenglow에서는 `{{realtimeURL}}`)처럼 서버의 주소를 입력합니다. `http://`, `https://`, `ws://`, `wss://` 모두 사용할 수 있습니다.
3. 주소 앞의 **SIO** 배지 메뉴에서 서버 버전을 고릅니다. **Socket.IO 4**, **Socket.IO 3**, **Socket.IO 2** 중 하나입니다.
4. **연결**(<kbd>⌘</kbd><kbd>R</kbd>)을 선택합니다. 연결되어 있는 동안에는 **연결 해제**로 표시됩니다.

편집기의 탭은 **문서**, **이벤트**, **헤더**, **매개변수**, **인증**, **변수**, **테스트**, **스크립트**, **설정**입니다. 헤더, 쿼리 매개변수, 인증은 WebSocket
핸드셰이크와 함께 전달됩니다.

## 네임스페이스, 경로, 인증 [#namespace-path-and-auth]

**이벤트** 탭 맨 위에서 클라이언트가 참여하는 방식을 정합니다.

| 필드 | 의미 |
| --- | --- |
| **네임스페이스** | 참여할 네임스페이스. 예: `/support`. 비워 두면 주소의 경로, 또는 `/`에 참여합니다 |
| **경로** | 서버가 수신 대기하는 곳. 비워 두면 기본값 `/socket.io/`입니다 |
| **인증** | 인증 페이로드. `{"token": "{{token}}"}` 같은 JSON 객체입니다. Socket.IO 3과 4는 네임스페이스에 참여할 때 이를 보냅니다. 비워 두면 없음 |

토큰은 [비밀 변수](/docs/workspaces/secrets)에 보관하고 페이로드에는 `{{token}}`으로 써서 값이 요청 파일에 남지 않게 하십시오. 연결을 거부하는 서버는 오류로 응답하며, 로그에
빨간색으로 표시됩니다.

## 이벤트 전송 [#emit-events]

**이벤트** 탭 맨 아래에서 다음과 같이 합니다.

1. `message` 같은 이벤트 이름을 입력합니다.
2. 인수를 JSON으로 입력합니다. `{{variables}}`를 쓸 수 있습니다. 배열은 여러 인수이며, 다른 값은 인수 하나입니다. 없으면 비워 둡니다.
3. 서버가 이벤트를 확인 응답하도록 요청하려면 **확인 응답**을 체크합니다.
4. **전송**(<kbd>⇧</kbd><kbd>⌘</kbd><kbd>↩</kbd>)을 선택합니다.

예를 들어 이벤트 `message`에 인수 `{"text": "Grüezi!"}`를 지정하면 객체 하나를 보내고, `["order", {"id": "ord_7Hk2Lw"}]`는 인수 두 개를 보냅니다.

<strong>+</strong>를 선택하면 이벤트가 요청과 함께 저장됩니다. 저장된 이벤트마다 이름, 이벤트, 인수, <strong>확인 응답</strong>, 자체 <strong>전송</strong> 버튼이 있습니다. 맨 앞의 체크 상자인 <strong>실행 시 전송</strong>은
사용자 없이 요청이 실행될 때 이벤트를 전송할지 정합니다. [실행](/docs/requests/runner), 명령줄, 에이전트는 참여한 뒤 사용 설정된 이벤트를 순서대로 전송하고, 10초 동안 수신한
다음 닫습니다. Support chat에는 저장된 이벤트가 하나 있습니다. **Say hello**입니다.

## 이벤트 로그 [#the-event-log]

응답 패널의 **메시지** 탭은 세션을 보여 줍니다. 양방향의 모든 이벤트가 시간순으로 나열되고 가장 최근 항목이 맨 아래에 오며, 각각 시간과 크기가 있습니다.

- 각 줄에는 이벤트 이름과 네임스페이스, 그리고 확인 응답을 요청했다면 그 확인 응답 ID가 표시됩니다. 확인 응답에는 그것이 응답하는 ID가 표시됩니다.
- **모두**, **보냄**, **받음**은 방향별로 거르고, **이벤트 필터링**은 이름이나 텍스트로 이벤트를 찾습니다.
- **더 보기**는 JSON 인수를 보기 좋게 정렬합니다.
- 서버가 확인 응답을 요청하는 이벤트를 보내면 **확인 응답**이 인수 없이 응답합니다.
- 이벤트와 함께 도착한 바이너리 첨부 파일은 그 아래에 <strong>첨부 파일 1, Base64: …</strong>처럼 표시됩니다.

Socket.IO 패킷은 첨부 파일을 최대 1000개, 합계 최대 64 MB까지 받습니다.

연결이 닫히면 세션은 로그를 응답 본문으로 하여 [기록](/docs/workspaces/history)에 보관됩니다.

## 명령줄에서 [#from-the-command-line]

`echolot send --socketio`는 터미널에서 연결합니다. 입력하는 각 줄이 이벤트와 그 JSON 인수입니다. 저장된 `.sio.toml` 요청도 실행합니다. [echolot send](/docs/cli/send)를
참고하십시오.
