2016-05-12 3 views
0

У меня есть электронная плата, которая собирает данные с датчиков, и я надеюсь отправить ее в веб-службу, которая затем обрабатывает некоторые данные и отправляет результаты на веб-сайт, когда URL введен. Для этого я использую несколько портов. Один порт прослушивает соединение UDP, а другой - HTTP. Код отлично работает на моей локальной машине. Вот кодНесколько портов node.js развертывание приложения в сети/облаке

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

Я знаю, что он не может быть размещен на герою, потому что он позволяет использовать только один порт.

Какие у меня варианты?

1) Согласно некоторым ответам на этом веб-сайте, websockets. Но я понятия не имею, как настроить websocket между udp и http-сервером. Любые ссылки на веб-сайты/github будут очень полезными.

2) Услуги хостинга, допускающие несколько портов. Есть ли те, которые предоставляют эту услугу? Будут оценены ссылки на документацию.

Заранее спасибо.

ответ

0

Вы можете сделать некоторые вещи, как этот

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

, а затем использовать эту переменную порта, как

app.listen(port); 

каждый раз, когда вам нужно работать на другом порту просто использовать

PORT = узел app.js

Смежные вопросы