# Socket.IO (/ja/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. <strong>ファイル › 新規Socket.IOリクエスト</strong>を選ぶか、サイドバーの<strong>リクエスト</strong>の横にある<strong>+</strong>メニューから<strong>新規Socket.IOリクエスト</strong>を選びます。
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. 引数を、`{{variables}}`が使えるJSONで入力します。配列は複数の引数になり、それ以外の値は唯一の引数になります。引数なしなら空にします。
3. サーバにイベントを確認応答してもらうには、**確認応答**にチェックを入れます。
4. **送出**（<kbd>⇧</kbd><kbd>⌘</kbd><kbd>↩</kbd>）を選びます。

たとえば、イベント`message`に引数`{"text": "Grüezi!"}`を指定すると、1つのオブジェクトが送信され、`["order", {"id": "ord_7Hk2Lw"}]`は2つの引数を送信します。

**+**を選ぶと、イベントがリクエストとともに保存されます。保存したイベントには、名前、イベント、引数、**確認応答**、専用の**送出**ボタンがあります。
先頭のボックスの**実行時に送出**は、あなたの操作なしにリクエストが実行されるときに送出するかどうかを決めます。
[ランナー](/docs/requests/runner)、コマンドライン、エージェントは、参加の後に有効なイベントを順に送出し、10秒間待ち受けて閉じます。Support chatには、保存済みのイベント**Say hello**が1つあります。

## イベントログ [#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)を参照してください。
