WebSocket プロトコル
接続
WebSocket エンドポイントに接続します:
ws://localhost:48911/ws/{lanlan_name}{lanlan_name} はキャラクター識別子です(例:小天)。
接続フロー
- クライアントが WebSocket 接続を開く
- サーバーがセッション ID(UUID)を割り当て、キャラクターの存在を検証する
- クライアントが
start_sessionを送信して LLM セッションを初期化する - クライアントがオーディオまたはテキスト入力を含む
stream_dataメッセージを送信する - サーバーがレスポンスをストリーミングで返す(テキスト、オーディオ、ステータス、感情)
- クライアントが
end_sessionを送信して終了する - サーバーがプレウォーム済みセッションへのホットスワップを実行する
キープアライブ
接続タイムアウトを防ぐために定期的に 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_session | boolean | 新しいセッションを作成するかどうか |
セッション終了
json
{ "action": "end_session" }ホットスワップメカニズムをトリガーします:現在の LLM セッションが閉じられ、プレウォーム済みのセッションに置き換えられます。
セッション一時停止
json
{ "action": "pause_session" }WebSocket 接続を維持したまま LLM の処理を一時停止します。
エラーハンドリング
キャラクター名が無効な場合、サーバーは適切なクローズコードで WebSocket を閉じます。サーバー側でキャラクターが切り替えられた場合、サーバーはクライアントに再接続を指示する catgirl_switched メッセージを送信します。
