node.exe进程与IISNode进程停止运行

我正在使用iisnode来运行我的node.js应用程序。 然而,大约一个小时后,node.exe进程停止运行(我需要它运行,因为我有一个每隔几秒从数据库中提取数据的setInterval()方法)。 有什么build议?

另外,如果我用process.env.PORT设置我的服务器,如何在客户端使用socket.io连接到它? 我明白,我必须使用

io.configure(function () { io.set("transports", ["xhr-polling"]); // no websockets io.set("polling duration", 10); io.set("log level", 1); // no debug msg }); 

当应用程序使用iisnode在IIS中托pipe时,这是对于socket.io的正确configuration。 在客户端,您使用IIS公开的端点的常规HTTP地址连接到服务器。 请注意,为了让socket.io能够正常工作,您需要将node.js应用程序作为IIS网站托pipe,而不是在网站中的虚拟目录:您的应用程序应该使用http:// foobar进行寻址。 com /而不是http://foobar.com/myapp/

当你说node.exe进程停止运行,你的意思是它被终止并消失或挂起? 在一段时间内不活动(当没有HTTP请求到达目标服务器时),IIS将终止工作进程(包括它产生的任何subprocess,在这种情况下是node.exe)。 该时间段的持续时间可在“应用程序池”设置中进行configuration。

如果您的应用程序中的逻辑需要间隔运行代码,IIS本身不提供最佳主机模型,因为进程生命周期与HTTP消息传递密切相关。 你真的需要一个耐用的服务器(例如Windows服务,检查http://nssm.cc/ ),或者某种forms的web cron。