2016-05-12 1 views
0

J'ai une carte électronique, qui recueille des données provenant de capteurs et j'espère l'envoyer à un service Web, qui effectue ensuite un traitement et envoie les résultats à un site Web, lorsque L'URL est entrée. J'utilise plusieurs ports pour cela. Un port écoute la connexion UDP et l'autre port est HTTP. Le code fonctionne bien sur ma machine locale. Voici le codePlusieurs ports déploiement de l'application node.js sur le web/cloud

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"); 

Je sais que ce ne peut pas être hébergé sur Heroku, car il permet à un seul port.

Quelles sont mes options?

1) Selon certaines réponses sur ce site, les websockets. Mais je n'ai aucune idée sur la façon de configurer websocket entre udp et le serveur http. Tous les liens vers des sites/github seraient très utiles.

2) Services d'hébergement permettant plusieurs ports. Y en a-t-il qui fournissent ce service? Des liens vers des documentations seront appréciés.

Merci d'avance.

Répondre

0

Vous pouvez faire quelque chose comme ça

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

puis utiliser cette variable de port comme

app.listen(port); 

chaque fois que vous devez exécuter sur le port différent il suffit d'utiliser

PORT = node app.js