我正在使用Eclipse的Google Chrome Developer Tools插件来调试我的Node.js服务器。此服务器使用Socket.io作为我的Web客户端和服务器之间的websocket连接。当我在服务器中设置断点并开始逐步执行代码时,问题就来了。客户很快决定服务器不再存在,因为不再有心跳或任何通信,因此它会断开连接。同时,当我逐步执行时,我的代码尝试使用套接字执行某些操作,然后它因为套接字现已关闭而死亡。尝试像这样调试有点棘手。
所以问题是,如何使用开放的websocket连接调试这样的服务器而不关闭连接?我不知道有一个很好的解决方案,但我想我会把它放在那里,看看是否有人有天才的想法。
答案 0 :(得分:6)
经过更多的研究后,我发现了几个看起来很有希望的项目,即节点检查员'和节点代码'但是,node-inspector不能使用最新版本的节点,而node-codein有很多错误。此外,两者都没有真正维护,它们都只适用于Chrome。所以,我编写了自己的解决方案,名为Node Monkey,它非常简单易用,适用于Firefox或Chrome。它只是捕获在Node应用程序中记录到控制台的内容,并将该输出重定向到浏览器控制台。您可以通过运行:
来安装它npm install node-monkey
答案 1 :(得分:5)
即使它听起来很讨厌和石头老化,但在这种情况下(实际调试客户端 - >服务器环境)我经常在服务器端使用标准输出,就像console.log()
和{ {1}}。
如果您需要调试客户端脚本,如果您不想丢失服务器连接,则可以执行相同的操作。除了你重新配置 socket.IO 的心跳超时之外,我实际上没有看到任何其他方法。
答案 2 :(得分:1)
我知道这是很久以后的事了,但我发现另一种选择最终是完美的快速socket.io健全性检查是socket-io-tester。
我在这里提到它,因为这个答案是谷歌的第一个结果,我花了一些时间来寻找工具。
答案 3 :(得分:0)
为此你可以参考socket.io的官方文档
<块引用>https://socket.io/docs/v3/logging-and-debugging/index.html
就我而言,我在 package.json 中做了这个
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "DEBUG=engine,socket.io* nodemon src/server.js"},
希望对您有所帮助,如有疑问,请随时问我