我有一个电子板,它从传感器收集数据,我希望将其发送到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)允许多个端口的托管服务。有没有提供这项服务?我们将非常感谢与文件的链接。
提前致谢。
答案 0 :(得分:0)
你可以做这样的事情
var port = process.env.PORT || 1185;
然后将此端口变量用作
app.listen(port);
每当你需要在不同的端口上运行时,只需使用
PORT = node app.js