記錄和除錯
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
若要查看來自引擎和 socket.io 的所有偵錯訊息
DEBUG=engine,socket.io* node yourfile.js
從瀏覽器套件中移除偵錯
雖然在開發期間很有用,但偵錯套件會為最終套件增加額外的負擔 (約 4KB 縮小且壓縮),這就是它從精簡套件中排除的原因 (有關各種瀏覽器套件的更多詳細資訊,請參閱 此處)。
如果您使用 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 程式庫發出,而是由瀏覽器本身發出,因此我們無法控制。