日志记录和调试
Socket.IO 现在完全由一个极简但功能强大的实用程序进行检测,该实用程序称为 debug,由 TJ Holowaychuk 创建。
在 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 压缩和 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 库而是由浏览器本身发出,因此不受我们的控制。