Web /云上的多个端口node.js应用程序部署

时间:2016-05-12 05:40:03

标签: node.js

我有一个电子板,它从传感器收集数据,我希望将其发送到Web服务,然后进行一些处理并在输入URL时将结果发送到网站。我为此使用多个端口。一个端口侦听UDP连接,另一个端口用于HTTP。代码在我的本地机器上运行正常。这是代码

var net = require('net')
   ,dgram = require('dgram')
   ,express = require('express')  
   ,io = require('socket.io')
   ,routes = require('./routes')
   ,http = require('http')
   ,fs = require('fs');

var app = module.exports = express.createServer();
var HOST = '192.168.0.132'
var PORT = 1337
var datarr = []

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.set('view options', {layout:false, pretty:true});
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true   })); 
});

app.configure('production', function(){
  app.use(express.errorHandler()); 
});

//ROUTES

app.get('/',routes.index);

//UDP Server
var decoder = new (require('string_decoder').StringDecoder)('utf-8')
var buffer = '';
var server = dgram.createSocket('udp4');

    server.on('listening',function() {
       console.log('Listening');
    });
    server.on('message', function(data,rinfo) {
            console.log(decoder.write(data));
            io.sockets.emit('data',decoder.write(data));
    });
    server.on('close', function(data) {
        console.log('closed');
    });
server.bind(1337,'192.168.0.132');

//UDP server ends

var io=require('socket.io').listen(app);
app.listen(1185);

io.sockets.on('connection',function (socket) {
    console.log('Hello Got a connection');

});

console.log("server listening");

我知道它不能托管在heroku上,因为它只允许一个端口。

我有什么选择?

1)根据本网站上的一些答案,websockets。但我不知道如何在udp和http服务器之间设置websocket。任何指向website / github的链接都非常有用。

2)允许多个端口的托管服务。有没有提供这项服务?我们将非常感谢与文件的链接。

提前致谢。

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情

var port = process.env.PORT || 1185;

然后将此端口变量用作

app.listen(port);
每当你需要在不同的端口上运行时,只需使用

PORT = node app.js