2016-07-03 1 views
-1

Je me suis fait une application de discussion avec node.js et socket.io et cela fonctionne, mais je ne veux pas l'exécuter depuis localhost: 80 plus, je le veux être en ligne. Comment puis-je transférer mon application Web? J'ai essayé de rediriger un port HTTP mais cela n'a pas fonctionné. Voici mon sever code côté:Comment faire pour transférer une application socket.io

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

Alors oui, tout ce que je veux faire est au lieu d'avoir à utiliser « localhost: 80 » Je veux être en mesure d'utiliser mon adresse IP pour se connecter.

Répondre

0

Le transfert de port normal à partir de votre routeur domestique devrait fonctionner correctement. Une connexion socket.io est une connexion webSocket en dessous et une connexion webSocket démarre comme une requête HTTP et la même socket originale est ensuite "mise à niveau" vers le protocole webSocket. Ainsi, le client envoie une requête HTTP au serveur pour démarrer le processus entier et établir la connexion d'origine. Par conséquent, toute configuration de transfert de port qui fonctionnera pour HTTP devrait fonctionner pour une connexion socket.io. Les connexions Socket.io sont des connexions de longue durée (contrairement aux connexions TCP). Vous devez donc vous assurer qu'aucune infrastructure ne permet une connexion de longue durée (les proxys doivent souvent être configurés spécialement pour les connexions webSocket de longue durée).), mais cela devrait s'appliquer à la redirection de port.


Pour votre information, vous n'avez pas besoin .listen() pour la connexion socket.io. Vous pouvez modifier ceci:

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

à ceci:

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

Dans le cas où ce n'est pas clair à votre avec le port forwrarding ...

Lorsque vous faites redirection de port sur votre routeur domestique, vous dirigez les demandes entrantes sur un port spécifique vers un ordinateur spécifique et un port sur votre réseau domestique. Ensuite, lorsque vous souhaitez vous connecter à partir d'Internet, vous vous connectez à l'adresse IP publique de votre routeur et au port que vous avez configuré pour la redirection de port. Le routeur utilise ensuite la règle de transfert de port pour rediriger toute demande entrante sur le port souhaité vers le serveur spécifique de votre réseau local. Vous devez être très prudent à ce sujet car si vous faites des erreurs ou si votre application n'est pas correctement sécurisée, cela pourrait ouvrir un point d'attaque où les internautes pourraient être en mesure d'attaquer les composants internes de votre réseau domestique.

Habituellement, ce n'est pas un plan à long terme et il est préférable de payer une société d'hébergement pour exécuter votre application. Ensuite, vous pouvez également obtenir une adresse IP permanente et pouvez configurer un nom de domaine pour correspondre à cette adresse IP.

+0

@AlexYates - Est-ce que cela répond à votre question? – jfriend00