ログとデバッグ
Socket.IOは、TJ Holowaychuk氏によるdebugという、最小限でありながら非常に強力なユーティリティによって完全に計測されるようになりました。
1.0以前は、Socket.IOサーバーはデフォルトですべてのログをコンソールに出力していました。これは多くのユーザーにとって非常に冗長であることが判明しました(他のユーザーにとっては非常に有用でしたが)。そのため、現在はデフォルトで完全に無音になっています。
基本的な考え方は、Socket.IOで使用される各モジュールが、内部構造を把握するためのさまざまなデバッグスコープを提供することです。デフォルトでは、すべての出力は抑制されており、DEBUG
環境変数(Node.JS)またはlocalStorage.debug
プロパティ(ブラウザ)を提供することで、メッセージを表示するように選択できます。
例えば、ホームページで動作を確認できます
利用可能なデバッグスコープ
利用可能な情報を確認する最良の方法は、*
を使用することです
DEBUG=* node yourfile.js
またはブラウザでは
localStorage.debug = '*';
そして、関心のあるスコープでフィルタリングします’関心のあるものだけを表示します。 *
にスコープをプレフィックスとして付けることができます。複数の場合はコンマで区切ります。例えば、Node.jsでsocket.ioクライアントからのデバッグステートメントのみを表示するには、以下を試してください
DEBUG=socket.io:client* node yourfile.js
engineとsocket.ioの両方からのすべてのデバッグメッセージを表示するには
DEBUG=engine,socket.io* node yourfile.js
ブラウザバンドルからデバッグを削除する
開発中は便利ですが、debugパッケージは最終バンドルに余分な負荷(約4KBのminifyおよびgzip圧縮)を追加するため、スリムバンドルからは除外されています(さまざまなブラウザバンドルの詳細についてはこちらを参照してください)。
webpackを使用している場合は、webpack-remove-debugで削除できます
{
module: {
rules: [
{
test: /\.js$/,
loader: 'webpack-remove-debug'
}
]
}
}
ブラウザコンソールのエラーログ
次のようなエラーログにご注意ください。
net::ERR_INTERNET_DISCONNECTED
net::ERR_CONNECTION_REFUSED
WebSocketはすでにCLOSINGまたはCLOSED状態です
クロスオリジンリクエストがブロックされました:同一オリジンポリシーにより、xxxのリモートリソースを読み取ることができません。(理由:CORSヘッダー ‘Access-Control-Allow-Origin’ がありません)。
ページ読み込み中にxxxへの接続が中断されました
これらはSocket.IOライブラリではなくブラウザ自体によって出力されるため、制御できません。