在服务器上凝视节点

我已经在我的服务器上设置了一个节点应用程序,我可以SSH入我的目录并运行

node server.js 

伟大的服务器运行良好,但只要我closures我的SSH窗口和注销节点服务器停止,我得到io.socket没有定义等等

这里是我的server.js

 var port = process.env.PORT || 1337; var io = require('socket.io').listen(port); var archiveMessages = {}; var channels = ['foo channel', 'bar channel']; var chat = io.of('/chat'); chat.on('connection', function(socket){ console.log('connected: %s', socket.id); // push available channel list socket.emit('available_channel', channels); socket.on('join', function(value){ console.log('%s joined channel: %s', socket.id, value.channelId); socket.join(value.channelId); socket.set('channel_id', value.channelId, function(){ var messages = archiveMessages[value.channelId] || []; socket.emit('joined', messages); socket.broadcast.to(value.channelId).emit('user:join', { id: socket.id }); }); }); socket.on('post', function(message){ socket.get('channel_id', function(err, channelId){ console.log('%s says<%s channel>: %s', socket.id, channelId, message); if(!(channelId in archiveMessages)){ archiveMessages[channelId] = []; } archiveMessages[channelId].push(message); socket.emit('posted', { message: message }); socket.broadcast.to(channelId).emit('user:message', { id: socket.id, message: message }); }); }); socket.on('disconnect', function(){ console.log('%s disconnected', socket.id); socket.get('channel_id', function(channelId){ socket.leave(channelId); socket.broadcast.to(channelId).emit('user:leave', { id: socket.id }); }); }); }); var image = io.of('/image'); image.on('connection', function(socket){ socket.on('upload', function(param){ console.log('upload base64 size: %d', param.base64.length); if(param.download){ socket.emit('download', { base64: 's' + new Array(65534).join('0') + 'e' }); } }); }); 

我怎样才能保持这个server.js不断运行。

谢谢

您需要使用Forever作为服务/守护程序运行Node应用程序。 或者,你仍然想通过SSH在shell上运行它,使用类似于screentmux东西。

永远使用:

如何启动一个node.js服务器作为守护进程?

使用屏幕:

http://www.rackaid.com/resources/linux-screen-tutorial-and-how-to/

使用Tmux:

http://blog.hawkhost.com/2010/06/28/tmux-the-terminal-multiplexer/

正如JP所说,永远是一个不错的select。

同时,如果你正在运行某种Unix变种盒子(比如LINUX或Mac),那么你已经拥有了你所需要的一切。 只需运行以下内容:

 nohup node server.js & 

这将在后台启动您的节点应用程序,并将应用程序的所有控制台输出redirect到名为“nohup.out”的本地文件。

永远的好处是它会重新启动您的服务器进程,如果它崩溃。

注意:如果计算机重新启动,单独一个都不会重新启动服务器应用程序。

我相信你需要使用第三方工具来保持它的运行。 如果在Windows上使用IISNode,或者在Linux上使用nginx来pipe理Node。