2015-11-17 1 views
0

J'ai un nœud js socket io application de chat en cours d'exécution sur le port 1234 et je veux que l'adresse www.example.com/chat pour frapper www.example.com:1234/chat en utilisant le fichier htaccess. Je l'ai mis en place où l'application de chat apparaît, mais socket IO ne fonctionne pas réellement, je reçois un socket.io/?EIO=3&transport=polling&t=1447797482690 Actuellement, j'utilise Pm2 pour déployer les applications node.js. Je ne sais pas si c'est socketio qui a un bug ou peut-être que je manque juste quelque chose dans mon code. Toute aide est appréciée.Masquer le numéro de port de l'application Socket IO en utilisant le fichier htaccess dans apache

Heres les htacces:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ http://www.example.com:1234/ [P,L] 

Et index.js:

var app = require('express')(); 
var http = require('http').Server(app); 
var io = require('socket.io')(http); 
app.get('/chat', function(req, res){ 
    res.sendFile(__dirname + '/chat.html'); 
}); 
io.on('connection', function(socket){ 
    console.log('a user connected'); 
    socket.on('disconnect', function(){ 
     console.log('user disconnected'); 
    }); 
    socket.on('chat message', function(msg){ 
     console.log('message: ' + msg); 
    }); 
    socket.on('chat message', function(msg){ 
     io.emit('chat message', msg); 
    }); 
}); 
http.listen(1234, function(){ 
    console.log('listening on *:1234'); 
}); 

Répondre

0

je qu'avec ce code:

dans .htaccess:

RewriteEngine on 
RewriteRule ^/?socket.io http://localhost:58000/socket.io/socket.io.js 

et dans mon fichier.js:

var http = require('http'), 
fs = require('fs'); 

var app = http.createServer(function (request, response) 
{ 
    response.writeHead(200, {'Content-Type': 'text/plain'}); 
    response.end('Notif.js RESPONSE'); 
}).listen(XXXXX); 

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

io.sockets.on('connection', function(socket) 
{ 
    console.log('New Connection from '+remoteAddr+':'+remotePort); 

    socket.on('message_to_client', function(data) //message_to_server_connection 
    { 
     var message2 = "Mensaje from server: "+data["message"]; //sanitize(data["message"]).escape(); // 
     io.sockets.emit("message_to_client", 
     { 
      message: message2 
     });    
    }); 
    socket.on('message_to_server_connection', function(data) //message_to_server_connection 
    { 
     io.sockets.emit("message_to_client", 
     { 
      message: "Connected...... "; 
     }); 
    }); 
}); 

console.log('WebSocket Server listening on localhost:XXXXX'); 

Quand j'écris dans la barre d'adresse du navigateur http://..../socket.io, NodeJS réponse est correct:

Notif.js RESPONSE 

Mon problème est de savoir comment écrire de code javascript pour vous connecter à NodeJS éviter d'écrire le vrai port de destination:

 var socketio= io.connect("localhost:XXXXX");    

     socketio.on("connect", function(data) 
     { 
      socketio.emit("message_to_server_connection", 
      { 
       message : "Connected" 
      }); 
     }); 

donc je veux la route ce trafic via le port 80