2016-05-05 16 views
2

Ich habe einen TCP-Server erstellt, der Nachrichten von einem Client (unter Verwendung der TCP-Client-Android-App zu Testzwecken) mit node.js empfängt. Ist es möglich, dies auf Heroku zu implementieren? Hier ist der CodeEinen node.js-TCP-Server auf heroku implementieren

var http = require('http') 
var express = require('express') 
var app = module.exports = express.createServer(); 
var net = require('net') 
var port = process.env.PORT || 5000 
var routes = require('./routes') 

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

var mainserver = net.createServer(function(socket) { 
    console.log('connected'); 
    socket.on('data',function(data){ 
    console.log(data.toString()); 
    io.sockets.emit('dummy',data.toString()); 
    }); 

    }); 

mainserver.listen(1337, '192.168.1.108'); 

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

Wie Sie sehen können, ich tcp-Nachrichten an Port 1337 und eine IP-Adresse senden, die durch Router zugewiesen wird.

Wenn ich localhost: 5000 in meinem Browser eintippe, erhalte ich eine HTML-Seite, die nur die Nachricht protokolliert, die der Server von der App erhält (und später über socket.io an den Client sendet).

Hier werden zwei Ports verwendet.

Wenn dies auf Heroku bereitgestellt werden sollte, wie die Portnummern ersetzen? Wie ersetze ich die IP-Adresse?

Jede Hilfe ist

geschätzt

Antwort

0

Ich glaube nicht, es auf Heroku laufen kann, wie es ist. Der einzige Port, der nach außen offen ist, den Sie für den Webserver verwenden können, wird unter process.env.PORT zugewiesen. Socket.io muss dieselben Ports wie der Webserver verwenden.

+0

Danke für die Antwort. Ich bin zu demselben Schluss gekommen. Kennen Sie einen anderen Hosting-Dienst [außer Heroku], in dem der Code ausgeführt werden kann? –

+0

AWS- und VPS-Dienste wie Digital Ocean können mehrere Ports auf einem Host ausführen. Muss es wirklich auf anderem Port als Port 80 hören? Sie können Websockets auf Heroku verwenden. Socket.io und Express können auf demselben HTTP-Server zuhören. – paolord

+0

Verzeih mir, ich bin neu bei node.js, also habe ich nicht wirklich verstanden, was du gesagt hast. Ich habe eine elektronische Karte, die Pakete über das Internet an diesen node.js-Server sendet. Diese Daten werden vom Server empfangen und vom HTTP-Server an einen Browser gesendet. Also ich denke, es braucht zwei Ports. Kommen Sie zu Ihrem Rat: WebSockets zwischen TCP und HTTP-Server, könnten Sie mich in Richtung einiger Quellcode, um mir den Einstieg zu helfen. –