2012-09-06 60 views
1

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

另外,如果我使用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 
}); 

回答

3

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

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

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

+0

Tomasz,感谢您的快速响应! – victormejia

+1

嗨Tomasz,我已经配置应用程序池来禁用空闲超时,但2天后它刚刚停止运行。有任何想法吗? – victormejia

+0

这里同样的问题。我甚至创建了一个HTTP登录页面,该应用程序每5分钟通过HTTP自我请求一次,但它在一段时间后仍会关闭。 –