2011-12-20 17 views
5

Tengo algunas preguntas con respecto al uso de socket IO con PHP y tal, soy nuevo en nodejs/socket io, así que sé muy poco, acabo de empezar a usarlo en los últimos días y estoy llegando al punto donde Implementaré esto en mi sitio web (a partir de ahora acabo de crear pequeños ejemplos de prueba).Node.js + Socket IO + Apache + PHP ¿eliminar el puerto de la url?

Pregunta: Actualmente tengo que agregar el puerto a mi servidor local para verlo y hacer que funcione, obviamente no puedo tenerlo cuando es un sitio web en vivo, y tampoco puedo hacer esto cuando uso páginas php (solo he estado haciendo ejemplos con html) Si estoy usando el puerto 4000 para mi servidor socket io tengo que ir a: localhost: 4000, sin embargo, necesito poder ir a: localhost: 8888/mysitefolder (8888 es el puerto para mi MAMP, para php y todo) He visto en preguntas donde las personas han resuelto esto pero no he podido lograr que funcione por mi cuenta.

Aquí está mi código:

chat.js

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

app.listen(4000); 


var users = []; 

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

io.sockets.on('connection', function (socket) { 

socket.emit('connected'); 

socket.on('userID', function (userID) { 
users.push(userID); 
}); 


socket.on('message', function (message) { 
socket.broadcast.emit('message-response', { data: message}); 
}); 

}); 

index.html

<title>Testing</title> 
<script src="/socket.io/socket.io.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
<script> 

function mktime(){ 
    var newDate = new Date; 
    return newDate.getTime(); 
    } 

    function appendMessage(data) 
    { 
    $("body").append(data+"<br />"); 
    } 

    var socket = io.connect('http://localhost:4000'); 
    socket.on('connected', function() { 

    //select id from database in real environment 
    socket.emit("userID", mktime()); 

    }); 



    socket.on('message-response', function (message) { 

    appendMessage(message.data); 

}); 


    $(document).ready(function(){ 
     $('#input').keypress(function(event) { 
     if (event.keyCode != 13) return; 
      var msg = $("#input").val(); 

      if (msg) { 


     socket.emit('message', msg); 
     appendMessage(msg); 

     $("#input").val('').focus(); 
     } 
    }); 
    }); 



    </script> 

    <body> 
    <input type="text" id="input"><br> 
    </body> 
+0

¿Qué quiere decir con 'Necesito poder ir a: localhost: 8888/mysitefolder'? Todo lo que necesita hacer es hacer referencia al archivo js correctamente como: "localhost: 4000/socket.io/socket.io.js" y eso es todo. Ni siquiera necesita un servidor Express, puede servir el archivo de índice con el código JS. – alessioalex

+0

Bien localhost: 8888 es donde se ejecuta MAMP, para php y todo, mysitefolder es solo la carpeta adentro para que funcionen los archivos php. también, ¿qué cambio en mis dos archivos? Lo intenté rápidamente y hay un error. (Como he dicho, soy nuevo con esto, así que no estoy seguro de cómo funciona todo) –

+0

No importa, lo tengo trabajando. Gracias. –

Respuesta

3

Creo que significa que usted no desea codificar un puerto o dirección URL en ¿el cliente? ¿Está bien?

En socket.io 0.8.7, no necesita proporcionarlo. Solo puede usar lo siguiente y se detectará automáticamente

var socket = io.connect(); 
+0

Eso no funcionó para mí. –

+0

Hola Dylan, ¿recibí tu pedido en ese momento? Tengo un socket.io que funciona usando emitir donde no proporciono el URL y el puerto. Solo proporciono el puerto en el lado del servidor, no el cliente -

+0

Ese no fue mi problema inicial, mi problema inicial fue que pensé que tenías que tener el puerto en la URL misma, en la barra. No sabía que la única razón por la que no funcionaba era porque hacía referencia al script socket.io. La solución estaba cambiando: a:

Cuestiones relacionadas