2016-07-03 4 views
-1

Ich habe mir eine Chat-Anwendung mit node.js und socket.io gemacht und es funktioniert, aber ich möchte es nicht mehr von localhost: 80 ausführen, ich will es sei ONLINE. Wie kann ich meine Web-App weiterleiten? Ich habe versucht, einen HTTP-Port zu portieren, aber das hat nicht funktioniert. Hier ist mein Sever Seite Code:Wie portiere ich eine socket.io App

var express = require("express"), 
    app = express(), 
    server = require("http").createServer(app), 
    io = require("socket.io").listen(server); 
server.listen(80); 

app.get("/", function(req, res){ 
    res.sendfile(__dirname + "/index.html"); 
}); 

Also ja, alles, was ich tun möchte, ist anstatt verwenden „localhost: 80“ Ich möchte in der Lage sein, meine IP-Adresse zu verwenden, zu verbinden.

Antwort

0

Normale Portweiterleitung von Ihrem Heimrouter sollte gut funktionieren. Eine socket.io-Verbindung ist eine webSocket-Verbindung darunter und eine webSocket-Verbindung beginnt als HTTP-Anforderung und derselbe ursprüngliche Socket wird dann auf das webSocket-Protokoll "hochgestuft". Daher stellt der Client eine HTTP-Anforderung an den Server, um den gesamten Prozess zu starten und die ursprüngliche Verbindung herzustellen.

Daher sollte jede Portweiterleitungskonfiguration, die für HTTP funktioniert, für eine socket.io-Verbindung funktionieren.

Socket.io-Verbindungen sind langlebige Verbindungen (im Gegensatz zu TCP-Verbindungen). Sie müssen also sicherstellen, dass keine Infrastruktur vorhanden ist, die keine langlebige Verbindung zulässt (Proxys müssen häufig speziell für langlebige webSocket-Verbindungen konfiguriert werden)), aber dies sollte für die Portweiterleitung gelten.


FYI, brauchen Sie nicht .listen() für die socket.io Verbindung.

io = require("socket.io").listen(server); 

dazu: Sie können dies ändern

io = require("socket.io")(server); 

Falls dies mit Port forwrarding auf Ihre nicht klar ist ...

Wenn Sie Port tun Weiterleitung an Mit Ihrem Heimrouter leiten Sie eingehende Anforderungen an einen bestimmten Port an einen bestimmten Computer und Port in Ihrem Heimnetzwerk weiter. Wenn Sie dann eine Verbindung über das Internet herstellen möchten, stellen Sie eine Verbindung zur öffentlichen IP-Adresse des Routers und dem Port her, den Sie für die Portweiterleitung konfiguriert haben. Der Router verwendet dann die Portweiterleitungsregel, um jede eingehende Anfrage am gewünschten Port auf den spezifischen Server in Ihrem lokalen Netzwerk umzuleiten. Sie müssen sehr vorsichtig sein, denn wenn Sie Fehler machen oder Ihre App nicht richtig gesichert haben, könnte dies einen Angriffspunkt eröffnen, bei dem Leute im Internet in der Lage sein könnten, die Interna Ihres Heimnetzwerks anzugreifen.

Normalerweise ist dies kein langfristiges Schema und es ist besser, ein Hosting-Unternehmen zu zahlen, um Ihre App zu betreiben. Dann können Sie auch eine feste IP-Adresse erhalten und einen Domänennamen einrichten, der dieser IP-Adresse entspricht.

+0

@AlexYates - Hat dies Ihre Frage beantwortet? – jfriend00

Verwandte Themen