Socket.io 客户端调试?

Posted

技术标签:

【中文标题】Socket.io 客户端调试?【英文标题】:Socket.io client debugging? 【发布时间】:2012-01-31 17:20:55 【问题描述】:

socket.io 是否有客户端调试模式,您可以在其中查看服务器发送给您的所有内容?

现在你用下面的代码实现了同样的效果:

socket.on('HELLO', function(arg1, arg2)  console.log('HELLO', arg1, arg2) ... 
socket.on('WORLD', function(arg1)  console.log('WORLD', arg1) ... 

如果我可以轻松地做到这一点而无需将 console.log 放在任何地方,那将非常方便。

【问题讨论】:

【参考方案1】:

将此粘贴​​到控制台,单击进入并刷新您的页面:

localStorage.debug = '*';

要仅使用来自套接字的传入数据获取调试信息,请改为粘贴:

localStorage.debug = 'socket.io-client:socket';

【讨论】:

我已经通过在我的网络浏览器中输入此代码来启用日志,但现在我无法禁用它。每当我启动我的应用程序时,我也会看到不再需要的套接字调试日志。如何删除/禁用这些套接字日志?我在 React Native 中使用套接字客户端。 只需取消设置localStorage.removeItem('debug') 的值或打开一些用于运行项目的工具并从本地存储中删除debug,您也可以尝试localStorage.debug = ''【参考方案2】:

您可以在 webkit 浏览器的 web 检查器(chrome、safari、chromium)中轻松查看它 为此

右击页面 转到检查元素 点击网络标签 在网络标签打开的情况下重新加载页面。 您可以看到所有带有 http get 请求的资源及其响应正在加载。 找到对 socket.io 服务器的第一个请求。 这将返回可用消息传输的列表。 Socket.io 客户端将选择第一个可用的传输。 (如果您的浏览器支持 Websockets) 现在,在第二个请求中,您将在“框架”选项卡中看到返回的所有响应。

【讨论】:

【参考方案3】:

从 Socket.io 1.0 版开始,您可以将 localStorage 中的“debug”属性设置为“*”。然后您将获得所有客户端日志。您甚至可以过滤,因为它在后台使用https://github.com/visionmedia/debug。这一切都很好地记录在这里:http://socket.io/docs/logging-and-debugging/

【讨论】:

文档不是很好。如果您只想查看来自套接字的新数据行,请将调试标志设置为“socket.io-client:socket”。我希望这可以作为过滤器的示例有所帮助(在没有示例的文档中提到)。【参考方案4】:

如果您在命令提示符下,请输入以下 2 个命令:

set DEBUG=* node yoursocketioprogram.js

现在您将在 socket.io-client 中的 debug() 中看到所有消息

【讨论】:

【参考方案5】:

如果您使用的是 Nodejs,请将此代码放在脚本顶部:

process.env.DEBUG="*"

const io = require('socket.io-client')

...

操作系统的终端“设置”并不总是有效。

【讨论】:

【参考方案6】:

目前看来,如果不按照您的描述手动记录它们是不可能的。

我已经在Socket.io-client — GitHub 中发布了一个关于此的问题。 (https://github.com/LearnBoost/socket.io-client/issues/460)。

【讨论】:

以上是关于Socket.io 客户端调试?的主要内容,如果未能解决你的问题,请参考以下文章

socket.io swift 在真实设备上不起作用

socket.io客户端API

即时通讯:服务端SpringBoot+Netty-Socket.io,客户端Socket.io.js+Java版Socket.io-client

socket.io 服务器能否与非 socket.io 客户端通信

学习 Socket.io

socket.io 客户端到客户端消息传递