Javascript 如何使用Socket.io调试Node.js

Javascript 如何使用Socket.io调试Node.js,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,我正在使用Google Chrome Developer Tools插件来调试我的Node.js服务器。此服务器使用Socket.io作为web客户端和服务器之间的websocket连接。当我在服务器中设置断点并开始单步执行代码时,问题就出现了。客户端很快决定服务器不再存在,因为不再有心跳或任何通信,所以它断开连接。同时,当我逐步执行时,我的代码尝试对套接字执行某些操作,但由于套接字现在已关闭,因此它将消失。这样调试会有点棘手 所以问题是,我如何调试这样一个服务器,打开websocket连接,而

我正在使用Google Chrome Developer Tools插件来调试我的Node.js服务器。此服务器使用Socket.io作为web客户端和服务器之间的websocket连接。当我在服务器中设置断点并开始单步执行代码时,问题就出现了。客户端很快决定服务器不再存在,因为不再有心跳或任何通信,所以它断开连接。同时,当我逐步执行时,我的代码尝试对套接字执行某些操作,但由于套接字现在已关闭,因此它将消失。这样调试会有点棘手


所以问题是,我如何调试这样一个服务器,打开websocket连接,而不关闭连接?我不知道是否有一个好的解决方案,但我想我应该把它放在那里,看看是否有人有天才的想法。

即使听起来有点讨厌和老掉牙,但在这种情况下(实际上是调试客户机->服务器环境),我通常在服务器端使用标准输出,就像
console.log()
控制台。调试


如果需要调试客户端脚本,如果不想失去服务器连接,也可以这样做。实际上,除了重新配置socket之外,我看不到任何其他解决方法。IO的心跳超时从根本上说更高。

在做了更多的研究之后,我发现了两个看起来很有希望的不同项目,即“节点检查器”和“节点编码”。但是,node inspector不适用于最新版本的node,node codein有很多bug。而且,两者都没有得到真正的维护,它们都只与Chrome一起工作。因此,我编写了自己的解决方案,名为,它使用起来非常简单,可以与Firefox或Chrome一起使用。它只捕获节点应用程序中登录到控制台的内容,并将输出重定向到浏览器控制台。您可以通过运行以下命令进行安装:

npm install node-monkey

我知道这是很久以后的事了,但我发现另一个选项非常适合快速进行socket.io健全性检查


我在这里提到它是因为这个答案是谷歌上的第一个结果,我花了更多的时间才找到这个工具。

为此,您可以参考socket.io的官方文档

在我的例子中,我是在package.json中这样做的

"scripts": {
 "test": "echo \"Error: no test specified\" && exit 1",
 "start": "DEBUG=engine,socket.io* nodemon src/server.js"},

如果您有任何疑问,我希望它能帮助您或随时询问我,这是我通常会做的,但我陷入了这样一种情况:由于需要检查数据,将数据转储到控制台是不现实的。它将滚动远远超出我的控制台缓冲区的限制,并且不允许检查深度嵌套的对象。如果我能以某种方式将调试数据转储到浏览器中,并使用Firebug或Chrome控制台,那么我就可以按我需要的方式检查对象了。贾斯汀,干得好。期待着体验一下。这对于测试Socket.IO很有用,但对于应用程序调试来说就不那么有用了。如果您试图执行
console.log()
以进行调试,节点monkey实际上会捕获该节点并将其发送到浏览器控制台进行检查。据我所知,使用socket io tester,您仍然需要手动处理,因为它不是专门为它构建的。也就是说,它看起来像是一个非常有用的应用,我可能会在未来使用,所以感谢分享!我正在获取DEBUG=engine,socket.io*节点应用程序“DEBUG”未被识别为内部或外部命令