Skip to main content

チャットのリアルタイム更新 — 共有ルームの挙動

チャットのリアルタイム更新 — 共有ルームの挙動

iknow.dev の Web チャットは HTTP で送信し、WebSocket でリアルタイムに反映 します。同じチャットルームを開いている人全員が、ほぼ同時に新しいメッセージを見られます。

基本的な仕組み

あなたが送信 → サーバーが保存 → WebSocket で全員に配信 → 画面に即時表示
                                    ↓
                              AI が回答生成 → 同様に配信

未ログインでも パブリックチャットの閲覧 では WebSocket 接続が行われ、他者の新着メッセージがリアルタイムで見えます(送信はログインが必要。iknow Navigator の匿名送信は例外)。

共有チャットであることの意味

送信時の画面の動き

  1. オプティミスティック表示 — 送信直後に自分のメッセージと AI のローディング(3 点)が先に出ます
  2. ストリーミング表示 — AI 回答の生成が始まると、ローディングが本文の逐次表示(タイプライター風)に切り替わります(message.answer-chunk)。質問は画面上部に固定され、回答はその下に流れ込むため、生成中に画面は動きません。メンション応答・多言語エージェント・メッセージ編集時の再生成は対象外で、生成完了後にまとめて届きます
  3. 確定配信 — サーバー保存が完了すると、同じルームの全員(自分含む)に message.sent が届き、ストリーミング行はその位置で確定表示に置き換わります
  4. 重複抑止 — HTTP と WebSocket の二重表示を防ぐため、メッセージ ID で同一メッセージを判別します

新規チャット作成時

他者の操作が見えるケース

操作 リアルタイムで見える?
誰かが新規メッセージを送信 ✓ 全員に配信
AI が回答を生成 ✓ 全員に配信(生成中の本文も逐次配信され、閲覧者にも少しずつ表示される)
誰かがメッセージを編集・削除 反映タイミングは再取得・イベント次第(編集・削除は主に操作者側で更新)
チャットタイトル変更(オーナー) ヘッダー・サイドバーは更新される

接続が切れたとき

匿名チャット(iknow Navigator)でも同じ

iknow Navigator への匿名送信も 同じ共有ルーム です。同じチャット URL を開いている人からは「匿名」として発言が見えます。

→ 「匿名チャットと iknow Navigator」