【问题标题】:Staring node on server服务器上的启动节点
【发布时间】:2012-08-23 05:40:30
【问题描述】:

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

node server.js

伟大的服务器启动并运行良好,但一旦我关闭我的 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 持续运行。

谢谢

【问题讨论】:

    标签: node.js


    【解决方案1】:

    我相信您需要使用第三方工具来保持它的运行。如果在 Windows 上使用 IISNode,如果在 linux 上使用 nginx 来为您管理 Node。

    【讨论】:

      【解决方案2】:

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

      永远使用:

      How does one start a node.js server as a daemon process?

      使用屏幕:

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

      使用 Tmux:

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

      【讨论】:

        【解决方案3】:

        正如 JP 所说,Forever 是一个不错的选择。

        同时,如果您在某种 Unix 变体机器上运行(如 LINUX 或 Mac),那么您已经拥有了所需的一切。只需运行以下命令:

        nohup node server.js &
        

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

        Forever 的好处是它会在崩溃时重新启动您的服务器进程。

        注意:如果计算机重新启动,任何人都不会重新启动您的服务器应用程序。

        【讨论】:

          猜你喜欢
          • 2018-04-05
          • 2017-07-31
          • 1970-01-01
          • 2017-08-06
          • 1970-01-01
          • 2020-11-17
          • 2020-02-23
          • 2013-05-09
          • 2013-11-15
          相关资源
          最近更新 更多