WebSocketテスター
WebSocketテスター:オンラインで接続、送信、フレームを記録 | We.Inc
無料のオンラインWebSocketテスター。ブラウザーからws://やwss://に接続し、テキストやJSONを送信。すべてのメッセージを確認でき、終了時にはクローズコードも表示されます。
WebSocketテスター
wss://またはws://のアドレスを貼り付けて「接続」を押すと、このテスターがあなた自身のブラウザーから実際のWebSocketを開きます。メッセージを入力して送信すると、送受信したすべてのフレームがタイムスタンプ付きのログに記録されます。ソケットが終了すると、クローズコード、理由、クローズハンドシェイクが正常に完了したかどうかが表示されます。
readyStateの各数値の意味
- CONNECTING
- 作成済み、ハンドシェイクはまだ完了していない
- CLOSING
- クローズハンドシェイクが始まっている
- CLOSED
- クローズ済み、または接続が開かなかった
ここでの通信が私たちのサーバーを経由することはありません。接続は、このページを開いているブラウザータブに組み込まれたWebSocketオブジェクトが開くため、サーバーにはあなたのブラウザー、IPアドレス、そしてこのページのオリジンhttps://we.incが見えます。Originヘッダーを確認するサーバーは接続を拒否する場合があります。このページはhttpsで配信されているため、wss://のアドレスを使うことをおすすめします。通常のws://は、安全でないとしてブラウザーにブロックされることがあります。
- サーバーのアドレスを入力します。ws://、wss://、http://、https://のいずれかで始まる必要があり、#フラグメントは含められません。
- サーバーがサブプロトコルを必要とする場合はカンマ区切りで入力し、「接続」を押します。
- メッセージを書いて「送信」を押すか、入力欄でCtrl+Enterを押します。JSONオプションにチェックを入れると、送信前にテキストが正しくパースできるか確認します。
- ログを確認します。矢印は方向を示し、クローズの項目にはコード、理由、wasCleanフラグが表示されます。
- 「切断」を押すと、任意のコード(1000、または3000から4999の範囲)と短い理由を指定してセッションを終了できます。
- 理由なしの1006ですぐに切断された場合は、フレームがやり取りされる前にハンドシェイクが失敗しています。アドレス、ポート、TLS、そしてサーバーが外部オリジンを拒否していないかを確認しましょう。
- ブラウザーは意図的にハンドシェイクの詳細をスクリプトから隠すため、errorイベントでは原因がわかりません。開発者ツールのNetworkパネルを開き、WSで絞り込むと、アップグレードのHTTPステータスを確認できます。
- ブラウザーはlocalhostと127.0.0.1を信頼できるアドレスとして扱うため、自分のマシンで動くサーバーを試すにはws://localhost:PORTが最も手軽です。
- バイナリフレームはデフォルトでBlobオブジェクトとして届きます。このテスターは中身を表示しようとせず、バイト数を表示します。
- クローズの理由は短くしましょう。UTF-8でエンコードした理由が123バイトを超えると、ブラウザーはSyntaxErrorを投げます。
よくある質問
自分のアプリでは動くのに、ここでは接続に失敗するのはなぜですか?
よくある原因はオリジンのチェックです。アプリは自身のオリジンから接続しますが、このページはhttps://we.incから接続します。サーバーが登録済みのオリジンしか受け付けない場合、ハンドシェイクを拒否し、ブラウザーはクローズコード1006を報告します。もう1つ試すべきなのは、アドレスをwss://形式にすることです。このページ自体がhttpsで配信されているためです。
データはWe.Incに送信されますか?
いいえ。このページはタブ内でソケットを作成し、メモリ上のログに書き込むだけです。メッセージはあなたのブラウザーと入力したサーバーの間で直接やり取りされます。ページを再読み込みするとログは消えます。
Authorizationなどのカスタムヘッダーを設定できますか?
ブラウザーからはできません。WebSocketのコンストラクターが受け取るのは、URLと任意のサブプロトコル一覧だけです。トークンが必要なサーバーは通常、クエリ文字列、Cookie、または接続後の最初のメッセージからトークンを読み取ります。
このツールからpingを送れないのはなぜですか?
ブラウザーのWebSocketインターフェースのメソッドはsend()とclose()だけです。pingとpongは制御フレームで、サーバーからpingが来るとブラウザーが自動で応答するため、ページのスクリプトからは見えません。サーバーがアプリケーションレベルのハートビートを使っているなら、通常のテキストメッセージを送ってください。
どのクローズコードを送れますか?
スクリプトがclose()に渡せるのは、1000か3000から4999の範囲のコードだけです。それ以外の数値ではInvalidAccessErrorが投げられます。1001から1015の範囲のコードは、ブラウザーやサーバー自身が設定するものです。
「接続」を押すと何が起こるか
- ブラウザーは、Upgrade: websocket、ランダムなSec-WebSocket-Key、Originヘッダーを含む通常のHTTPリクエストを送ります。応じるサーバーは、ステータス101 Switching Protocolsと、そのキーから導出したSec-WebSocket-Acceptの値を返します。以降は同じTCP接続で双方向にフレームが流れます。
- 接続の試みは、必ずopenイベントかcloseイベントのどちらかで終わります。openなしでcloseが出た場合はアップグレードが成功しておらず、原因はアドレス、ネットワーク、サーバーのハンドシェイク規則のいずれかに絞り込めます。
closeイベントの読み方
- ログのクローズ項目には3つの情報があります。codeは下の表にある数値です。reasonは相手側が送ったテキストで、空のことも多くあります。wasCleanは両側がクローズフレームを交換した場合にのみtrueになるため、falseは通常、ネットワークの切断かサーバーのクラッシュを意味します。
WebSocketのクローズコード
1000から1015の範囲はプロトコル自体のために定義されています。3000から3999はライブラリやフレームワーク向けにIANAに登録される範囲で、4000から4999は自分のクライアントとサーバー間で自由に使えるプライベート用の範囲です。
クローズコードとその意味
- Normal Closure
- 処理が完了し、意図的にソケットが閉じられた
- Going Away
- サーバーが停止中、またはページが別の場所へ遷移した
- Protocol error
- 一方がフレームの規則に違反した
- Unsupported Data
- 受け付けられない種類のデータ。テキスト専用サーバーへのバイナリなど
- No Status Received
- 予約済み:コードを含まないクローズフレームが届いた
- Abnormal Closure
- 予約済み:クローズフレームが一切ない。ハンドシェイクの失敗やネットワークの切断が多い
- Invalid frame payload data
- メッセージのデータに不整合がある。UTF-8でないテキストなど
- Policy Violation
- 1003や1009に当てはまらない場合の汎用的な拒否
- Message Too Big
- フレームが受け付け可能なサイズを超えた
- Mandatory Ext.
- クライアントが求めた拡張にサーバーが同意しなかった
- Internal Error
- サーバーで予期しない状態が発生した
- Try Again Later
- 過負荷などの一時的な状態
- Bad Gateway
- プロキシが上流サーバーから無効な応答を受け取った
- TLS handshake
- 予約済み:TLSハンドシェイクが失敗した。信頼されていない証明書など
- 3000〜3999
- 登録済み
- ライブラリやフレームワークが定義
- 4000〜4999
- プライベート用
- クライアントとサーバーで取り決めた任意の意味
同じクライアントを数行のJavaScriptで
最小限のブラウザークライアント
このテスターが内部で行っていることです。接続を開き、すべてのメッセージを記録し、クローズコードを報告します。
サブプロトコル(任意、カンマ区切り)
接続
切断
クローズコード
クローズの理由
メッセージ
送信
Ctrl+Enterで送信
メッセージが有効なJSONか確認する
ログを消去
状態:{v}
フレームログ
まだ何もありません。サーバーに接続するとログが始まります。
接続しました。サーバーが選んだサブプロトコル:{v}
コード{n}で切断、理由「{v}」、wasClean {c}
エラーイベント:ブラウザーは原因を示しません。Networkパネルを確認してください。
ブラウザーがこのアドレスを拒否しました:{v}
1000、または3000から4999の数値を使ってください。
理由が{n}バイトあります。上限は123バイトです。
有効なJSONではありません:{v}
[バイナリフレーム、{n}バイト]
無料で始める · クレジットカード不要
関連: 無料ツール|ビジネス向け計算・生成ツール
製品
ご利用いただける方
機能
リソース
会社情報
サイトマップを見る