どのようにお手伝いできますか?

ご用件を簡単にお知らせください。メールで返信します。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
トップページへ

通信:WebSocket、HTTPフォールバック、再接続

ウィジェットとサーバーの通信:アドレス、rc.v1、フレーム形式、エラーと切断コード、上限、seqと重複排除による再接続、SSEとロングポーリングのHTTPフォールバック。

このページでは、ブラウザーのウィジェットとチャットサーバーの間の通信を説明します。開発者ツールのNetworkタブでの問題調査、プロキシやファイアウォールのルール、Content Security Policyに必要な情報です。

重要: 通信プロトコルは、当社のウィジェットと当社のサーバー間のインターフェースです。直接実装した独自クライアントは正式対応ではなく、バージョン1内でフィールドを拡張する場合があります。独自の画面にはJavaScript API、サーバー接続にはWebhookとサーバーAPIを使ってください。

アドレス

WebSocketアドレスの決定方法:

  1. ローダータグのdata-rc-ws-url、window.ReactiveChatSettings.wsUrl、ReactiveChat('boot', { wsUrl })。指定があれば、その値を使います。
  2. なければ、loader.jsの場所から、wss://ws.+ドメインの最後の2つのラベル+/rc_wss/で導きます。cdn.reactive.chatはwss://ws.reactive.chat/rc_wss/になります。

注意点は2つです。

WebSocket経路はクエリパラメーターを評価しません。

接続の確立

フレーム形式

両方向のすべてのメッセージは、次の形式です。

{ "v": 1, "t": "msg", "id": "01JAB3C4D5E6F7G8H9JKMNPQRS", "ts": 1792500000000, "d": { } }

不明な種類とフィールドは無視し、古いウィジェットと新しいサーバーの互換性を保ちます。

メッセージの種類

ウィジェットからサーバーへ:

サーバーからウィジェットへ:

エラーコード

t: "error"フレームで、d.code、d.message(開発者専用の英語)、d.retry(no、immediate、backoff、after_reinit)、必要に応じd.retry_after_msとd.detailを返します。一覧は固定で、不明なコードはinternalとして扱います。

切断コード

接続ごとの上限

サーバーがinit_ok.limitsとinit_ok.featuresで、適用値を送ります。

再接続、順序、重複

HTTPフォールバック

WebSocketが通らない場合、同じフレームと上限の通常のHTTPSで続行します。ウィジェットのみが使い、オペレーター画面は常にWebSocketです。短い説明はHTTPフォールバックをご覧ください。

適用条件:

fetchがないブラウザーでは使えません。既存のWebSocketが切れた場合はWebSocketで再接続します。切り替え後はページごとに1回、WebSocketが通るか確認し、通ればrc_httpを削除して次のページから戻します。

リクエスト(https://ws.reactive.chat/rc_wss/h/ 配下):

最初にSSEを試し、プロキシのバッファリングなどで5秒以内に最初のフレームが来なければ、ロングポーリングに切り替えます。404(unbekannt)、403、413、429などは切断と同様に扱い、待機後に再試行します。60秒リクエストがなければサーバーが閉じます。CORSのAccess-Control-Allow-Originはオリジンを反映し、認証情報は含めません。オリジン検証はWebSocketと同じくinit時です。

運営側の要件:

ブラウザーの保存: sessionStorageのrc_http項目にHTTPS接続の時刻だけを保存し、個人データは含みません。

使用中の経路

開発者ツールのNetworkタブで確認します。

次:上限と利用枠 · トラブルシューティング

最終更新: