CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-04-26上級

Claude API × WebSocket × Redis Pub/Sub でスケーラブルなリアルタイム AI チャットサーバーを構築する — Node.js 本番設計・マルチユーザー対応・コスト制御の実装

Claude API × WebSocket × Redis Pub/Sub でリアルタイム AI チャットサーバーを本番運用する設計と実装。SSE との判断基準、マルチインスタンス対応、停止遅延がユーザーごとの予算精度をどう崩すかまで、計測コードつきで扱います。

websocketredis2nodejs2streaming16realtime3production87api38

プレミアム記事

チャット UI でユーザーが送信ボタンを押してから、AI の返答が少しずつ画面に流れ始める瞬間があります。あの体験を SSE(Server-Sent Events)で実装している方は多いのですが、「ユーザーが途中でメッセージを送り直せるようにしたい」「接続を切らずに複数ターンを管理したい」「入力中インジケーターを双方向で表示したい」という要件が加わった途端、SSE では対応しきれない壁にぶつかります。

私自身、モバイルアプリのバックエンドを設計するときに同じ壁にぶつかりました。SSE は HTTP レスポンスの拡張でしかなく、サーバーからクライアントへの一方向通信です。クライアントからサーバーへのメッセージは、別途 REST API の呼び出しが必要になります。セッションを管理するために状態をどこかに持つ必要が生まれ、複数のインスタンスに水平スケールすると途端に複雑になります。

WebSocket は最初から双方向通信を前提に設計されています。一本の接続で送受信が完結するので、会話の文脈管理がシンプルになります。そして Redis Pub/Sub を組み合わせると、サーバーが複数台になっても特定のユーザー宛てのメッセージを正しいインスタンスに届けられます。

以下は、Claude API のストリーミングを WebSocket に載せ、Redis Pub/Sub で複数インスタンスに広げるまでの設計と実装です。動くコードと、実際に運用してから気づいた前提を添えました。

SSE と WebSocket の使い分け — 設計判断の基準

まずどちらを選ぶべきかの判断基準を整理します。この判断を誤ると後から大きなリファクタが発生します。

SSE で十分なケース:

  • 単発の質問 → 回答のみ(ユーザーが途中で割り込まない)
  • サーバーからの一方向通知(ニュースフィード、進捗バー)
  • インフラがHTTP/2に対応しており接続数の制限が問題にならない
  • バックエンドが Cloudflare Workers や Lambda など WebSocket を使いづらい環境

WebSocket が必要なケース:

  • ユーザーが AI の生成中に「止めて」「別の話題に切り替えて」ができる双方向制御
  • 「ユーザーが入力中」インジケーターをリアルタイムで AI 側に伝えたい
  • 1 つの接続で複数ターンの会話を管理し、ネットワーク確立コストを削減したい
  • 複数ユーザーが同じセッションを共有するコラボレーション機能

今回は後者のケースを想定します。

アーキテクチャ全体設計

構成の全体像は次のとおりです。

[Mobile/Web Client]
      |  WebSocket (ws://)
      |
[Node.js WebSocket Server (複数台)]
      |  Claude API Streaming (HTTPS)
      |  Redis Pub/Sub (セッション間メッセージルーティング)
      |
[Redis] --- [Claude API (Anthropic)]

各コンポーネントの役割は以下のとおりです。

  • Node.js WebSocket Server: クライアントの接続を受け付け、Claude API にストリーミングリクエストを送り、返ってきたデルタをクライアントに転送する
  • Redis(Pub/Sub): サーバーが複数台になったときに、あるインスタンスに届いたメッセージを正しいインスタンスのユーザーへ届けるためのルーター
  • Redis(Hash/String): ユーザーごとのトークン使用量と会話履歴の管理

依存パッケージは以下のとおりです(Node.js 20 以上を推奨)。

npm install ws @anthropic-ai/sdk ioredis jsonwebtoken dotenv
npm install -D typescript @types/ws @types/node tsx

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
停止要求から生成が止まるまでの遅延を測る計装コードと、遅延100ms/500ms/2,000ms が月3,000回の中断でいくらの差になるかの試算
Redis Pub/Sub に停止指示だけを乗せると再起動中のインスタンスで消える理由と、ローカル abort を優先する回避策
WebSocket サーバー・Claude API ストリーム変換・Redis ルーティング・JWT 予算制御の完全な実装コード(Node.js / TypeScript)
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API & SDK2026-03-31
Claude API ストリーミング × リアルタイムチャットUI 本番実装ガイド
Claude APIのストリーミングレスポンスとServer-Sent Eventsを活用し、Next.js App RouterでリアルタイムチャットUIを本番品質で組み上げる手順を、SSEプロトコル・Tool Use統合・接続復旧・コスト最適化まで通しで整理します
API & SDK2026-06-27
Claude API のストリーミングが「エラーも出さずに」止まるとき — 沈黙する停止を検知して途中から続ける運用メモ
Claude API のストリーミングが例外も出さずに無言で止まる「沈黙停止」を、トークン間隔のウォッチドッグで検知し、受信済みテキストを引き継いで途中から再開する実装と、長時間の自動運用で崩れないためのタイムアウト予算の設計をまとめます。
API & SDK2026-07-03
同時リクエスト数はいくつまで持つのか — Little の法則と実測メモリで決める Claude API 本番デプロイのインフラ要件
同時リクエスト数・待ち行列長・メモリはいくつに設定すべきか。Claude API 本番デプロイのインフラ要件を Little の法則と実測ハーネスで数字から導く手順を、夜間バッチで OOM を踏んだ経験をもとに整理しました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →