Skip to content

WebSocket プロトコル

接続

WebSocket エンドポイントに接続します:

ws://localhost:48911/ws/{lanlan_name}

{lanlan_name} はキャラクター識別子です(例:小天)。

接続フロー

  1. クライアントが WebSocket 接続を開く
  2. サーバーがセッション ID(UUID)を割り当て、キャラクターの存在を検証する
  3. クライアントが start_session を送信して LLM セッションを初期化する
  4. クライアントがオーディオまたはテキスト入力を含む stream_data メッセージを送信する
  5. サーバーがレスポンスをストリーミングで返す(テキスト、オーディオ、ステータス、感情)
  6. クライアントが end_session を送信して終了する
  7. サーバーがプレウォーム済みセッションへのホットスワップを実行する

キープアライブ

接続タイムアウトを防ぐために定期的に ping メッセージを送信します:

json
{ "action": "ping" }

サーバーは以下で応答します:

json
{ "type": "pong" }

セッション管理

セッション開始

json
{
  "action": "start_session",
  "input_type": "audio",
  "new_session": true
}
フィールド説明
action"start_session"必須
input_type"audio" | "text"入力モード
new_sessionboolean新しいセッションを作成するかどうか

セッション終了

json
{ "action": "end_session" }

ホットスワップメカニズムをトリガーします:現在の LLM セッションが閉じられ、プレウォーム済みのセッションに置き換えられます。

セッション一時停止

json
{ "action": "pause_session" }

WebSocket 接続を維持したまま LLM の処理を一時停止します。

エラーハンドリング

キャラクター名が無効な場合、サーバーは適切なクローズコードで WebSocket を閉じます。サーバー側でキャラクターが切り替えられた場合、サーバーはクライアントに再接続を指示する catgirl_switched メッセージを送信します。

MIT ライセンスの下で公開。