我正在使用iisnode来运行我的node.js应用。但是,大约一个小时后,node.exe进程停止运行(我需要它运行,因为我有一个setInterval()方法,每隔几秒从数据库中提取数据)。有什么建议吗?
另外,如果我使用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
});
答案 0 :(得分:4)
当使用iisnode在IIS中托管应用程序时,这是socket.io的正确配置。在客户端,使用IIS公开的端点的常规HTTP地址连接到服务器。请注意,为了使socket.io能够开箱即用,您需要将node.js应用程序作为IIS WebSite而不是网站中的虚拟目录托管:您的应用程序应该可以通过http://foobar.com/来寻址比http://foobar.com/myapp/。
当你说node.exe进程停止运行时你的意思是它终止并消失或挂起?在一段时间不活动之后(当没有HTTP请求到达目标服务器时),IIS将终止工作进程(包括它们产生的任何子进程,在本例中为node.exe)。该时间段的持续时间可在“应用程序池”设置中进行配置。
如果您依赖应用程序中需要间隔运行代码的逻辑,则IIS本身不提供最佳托管模型,因为进程生命周期与HTTP消息传递密切相关。您确实需要一个持久的服务器(例如Windows服务,签出http://nssm.cc/)或某种形式的Web cron。