WebSocketとSSE
WebSocketサーバに接続し、保存済みのメッセージや単発のメッセージを送信し、Server-Sent Eventsのストリームを届くそばから追います。
WebSocketリクエストは、開いたままの接続を作ります。メッセージを送信し、サーバのメッセージが届くそばから確認できます。 Server-Sent Events(SSE)は、レスポンスがストリーミングし続ける通常のHTTPリクエストです。Echolotは各イベントを届くそばから表示します。
WebSocketリクエスト

接続する
- ファイル › 新規WebSocketリクエストを選ぶか、サイドバーのリクエストの横にある+メニューから新規WebSocketリクエストを選びます。
ws://またはwss://で始まるアドレスを入力します。AlpenglowのRealtime › Order updatesは{{wsURL}}/ordersを使い、これはwss://demo.echolot.dev/v1/ordersです。- 接続(⌘R)を選びます。
接続が開いている間、ボタンには接続解除と表示されます(もう一度⌘R)。保護された環境が有効なときは、環境名付きでProductionに接続…と表示され、先に確認します。 保護された環境を参照してください。
エディタのタブは次のとおりです:ドキュメント、メッセージ、ヘッダー、パラメータ、認証、変数、テスト、スクリプト、設定。 ヘッダー、クエリパラメータ、認証は、開始時のハンドシェイク(HTTPアップグレード)とともに送られるので、ヘッダーやアドレスでトークンを求めるサーバにも、そこで渡されます。 TLSの検証、プロキシ、証明書などの設定は、HTTPリクエストと同じように適用されます。
サブプロトコル
メッセージタブの上部のサブプロトコルには、サーバに提示するプロトコルを、graphql-ws, chat.v2のようにカンマで区切って並べます。なしなら空にします。
メッセージを送信する
メッセージタブの下部にメッセージを入力して、送信(⇧⌘↩)を選びます。{{variables}}が使えます。
接続が開くまで、欄には接続してメッセージを送信と表示されます。
よく送るメッセージは、リクエストとともに保存できます。欄の横の+を選ぶと、入力した内容が保存されます。保存したメッセージには、名前、テキスト、専用の送信ボタンがあります。 Order updatesには2つあります:
{"op":"subscribe","channel":"orders"}{"op":"ping"}保存したメッセージの先頭のボックスの実行時に送信は、あなたの操作なしにリクエストが実行されるときに送信するかどうかを決めます。 ランナー、コマンドライン、エージェントでの実行です。これらは、接続の後に有効なメッセージを順に送信し、10秒間待ち受けて閉じます。
メッセージログ
レスポンスペインのメッセージタブには、セッションが進行するとおりに表示されます。両方向のすべてのメッセージが、新しいものが最後に、時刻とサイズ付きで並び、接続が開いた時点と閉じた時点も表示されます。
- すべて、送信、受信で、方向によって絞り込みます。
- メッセージをフィルタで、メッセージをテキストから探せます。
- その他は、JSONメッセージを整形して表示し、折りたたむでもう一度折りたたみます。
- コピーボタンは、メッセージをコピーします。
サーバのpingには、Echolotが自動で応答します。フラグメントから組み立てられたメッセージは最大64 MBで、それより大きいメッセージは、コード1009で接続を閉じます。
接続が閉じると、セッションは履歴に保存されます。ハンドシェイクがリクエストとして、メッセージログがレスポンスのボディとして保存されます。
Server-Sent Events
Server-Sent Eventsのストリームは、text/event-streamタイプのHTTPレスポンスで、イベントを送り続けます。そのためには通常のHTTPリクエストを使います。アドレス以外に設定するものはありません。

- AlpenglowワークスペースでRealtime › Order eventsを開きます。
Accept: text/event-stream付きでGET {{baseURL}}/orders/eventsを送信します。 - 送信を選びます。
- レスポンスペインのイベントタブを選びます。
イベントタブには、各イベントが順番に、番号、イベント名、ID(id:)付きで一覧され、データはJSONならJSONとして表示されます。ストリームの実行中は新しいイベントを追い、その数も数えます。
ボディタブには、サーバが書いたままのストリームが、届くにつれて伸びていく形で表示されます。
ストリームは、サーバが終了するか、キャンセル(⌘.)を選ぶまで続き、届いた内容は保持されます。ストリームが始まった後は、リクエスト全体のタイムアウトは適用されなくなります。 実行時、コマンドライン、エージェントでは、ストリームは10秒後に終了されます。
ストリームを止まった場所から再開するには、最後のイベントのIDをLast-Event-IDヘッダーで送り返します。デモAPIのストリームは、1秒間隔で20個のイベントを送り、endを送って終わり、Last-Event-IDに対応しています。
HTTP上のGraphQLサブスクリプションもServer-Sent Eventsを使います。GraphQLを参照してください。
コマンドラインから
echolot sendは、ターミナルからWebSocketとSocket.IOのセッションを開き、イベントストリームを追います。echolot sendとリアルタイムのチュートリアルを参照してください。

