我正在试图找出如何关闭Express的实例.基本上,我想要.listen(port)
调用的反转- 如何让Express服务器停止监听,释放端口,并干净地关闭?
我知道这似乎是一个奇怪的查询,所以这里是上下文; 也许还有另一种方法可以解决这个问题,我认为这是错误的方式.我正在尝试为我的socket.io/nodejs应用程序设置测试框架.这是一个单页面的应用程序,所以在我的测试脚本中(我使用的是Mocha,但这并不重要)我希望能够启动服务器,对它运行测试,然后关闭服务器.我可以通过假设在测试开始之前打开服务器或者让其中一个测试启动服务器并让每个后续测试都认为它已经启动来解决这个问题,但这真的很麻烦.我更希望每个测试文件都使用适当的设置启动服务器实例,然后在测试结束时关闭该实例.这意味着运行测试没有奇怪的依赖关系,一切都很干净.这也意味着我可以进行启动/关机测试.
那么,有关如何做到这一点的任何建议?我已经考虑过手动触发异常以降低异常,但这看起来很混乱.我已经挖掘了Express文档和源代码,但似乎无法找到任何关闭服务器的方法.socket.io中也可能有这样的东西,但由于套接字服务器只是连接到Express服务器,我认为这需要在快速层发生.
在iOS项目的重构过程中,我碰到了这个bug.在链接阶段,我收到此消息:
ld:/path/to/TinCanViewController-E98A666B7AF2673A.o和/path/to/TinCanViewController-E98A666B7AF2673A.o中的重复符号_OBJC_IVAR _ $ _ TinCanViewController.currentViewController
据我所知,它看起来声称TinCanViewController-E98A666B7AF2673A.o
是两次声明指定的符号; 两个路径都指向完全相同的.o文件.我跑nm
了那个特定的文件,它只包括那个符号一次:
00008150 S _OBJC_IVAR _ $ _ TinCanViewController.currentViewController
我nm
在目录中运行了所有其他.o文件,看看它们是否以某种方式声明了这个符号,但它们不是.这发生在我添加到TinCanViewController类的任何成员 - 它不是特定于currentViewController.
我觉得我必须以某种方式以某种方式与班级联系两次,但我非常刻苦地检查了所有对这门课程的引用.在重构版本中,基本上没有.AppDelegate包含它,但是现在它基本上只是一个直通类,它在开始时加载另一个ViewController.项目中没有其他类包含它.
有关可能导致此问题的原因或如何更好地调试它的任何建议?
作为一个更大的项目的一部分,我希望能够获取两个文本体并将它们交给合并算法,该算法返回自动合并的结果(在更改不冲突的情况下)或抛出错误和(可能)生成单个文本文档,突出显示冲突的更改.
基本上,我只是想要一种程序化的方式来完成地球上每个源控制系统的内部工作,但我很难找到它.有很多可视化的GUI用于执行这种主导我的搜索结果的东西,但它们似乎都不容易访问核心合并算法.每个人都依赖于一些常见且易于理解的算法/库,我只是不知道这个名字,所以我很难找到它吗?这是对diff的一些细微调整吗?我应该寻找差异库而不是合并库?
Python库是最有帮助的,但如果必须的话,我可以忍受与其他库(或命令行解决方案)接口的开销.这种操作应该相对不常见.
socket.io
似乎有一个基本上合理的日志记录系统的所有内部.我如何自己获取该日志记录对象,以便在适当的级别生成自己的日志消息?让我感到console.log()
困惑的是,我的消息在socket.io
消息旁边没有时间戳,没有水平和丑陋.我已经在socket.io
代码中进行了大量的探索,而我现在对于节点还不够精明,无法理解对象层次结构是什么样的,知道如何从我的代码中获取我想要的对象.
从长远来看,我可能想要一个更强大的日志记录系统模块(能够记录文件,自动轮换,按模块管理级别,自定义日志级别等).温斯顿看起来很明智,但我也可以socket.io
使用它吗?把所有东西放在一个地方真好.