2011-12-20 16 views
5

Ho alcune domande sull'utilizzo di socket IO con PHP e così, sono nuovo su nodejs/socket io quindi so molto poco, ho appena iniziato a usarlo negli ultimi giorni e sto arrivando al punto in cui Lo implementerò sul mio sito web (a partire da ora sto costruendo dei piccoli esempi di test).Node.js + Socket IO + Apache + PHP rimuove la porta dall'URL?

Domanda: Attualmente devo aggiungere la porta al mio localhost per vederlo e farlo funzionare, ovviamente non posso averlo quando si tratta di un sito web dal vivo, e anche io non posso farlo quando uso pagine php (sto solo facendo degli esempi con html) Se sto usando la porta 4000 per il mio server io socket devo andare su: localhost: 4000, tuttavia devo essere in grado di andare a: localhost: 8888/mysitefolder (8888 è la porta per il mio MAMP, per php e tutto il resto) ho visto in domande in cui le persone hanno risolto questo problema, ma non sono riuscito a farlo funzionare per conto mio.

Ecco il mio codice:

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

Che cosa si intende per 'Ho bisogno di essere in grado di andare a: localhost: 8888/mysitefolder'? Tutto quello che devi fare è fare riferimento correttamente al file js come: "localhost: 4000/socket.io/socket.io.js" e il gioco è fatto. Non hai nemmeno bisogno di un server Express, puoi servire il file indice con il codice JS. – alessioalex

+0

Bene localhost: 8888 è il luogo in cui MAMP viene eseguito, per php e tutto il resto, mysitefolder è solo la cartella interna per far funzionare i file php. anche, cosa cambio nei miei due file? Ho appena provato e c'è un errore. (Come ho detto, sono nuovo con questo, quindi non sono sicuro di come tutto funzioni) –

+0

non importa, ho capito. Grazie. –

risposta

3

Credo che si intende che non si desidera codificare una porta o l'URL nella il cliente? È giusto?

In socket.io 0.8.7, non è necessario fornirlo. Si può solo utilizzare il seguente e sarà rilevato automaticamente

var socket = io.connect(); 
+0

Questo non ha funzionato per me. –

+0

Ciao Dylan, ho ricevuto la tua richiesta in quel momento? Ho un socket.io funzionante utilizzando emettere dove non fornisco l'URL e la porta. Fornisco solo la porta sul lato server non client -

+0

Questo non era il mio problema iniziale, il mio problema iniziale era che pensavo che dovessi avere la porta nell'URL stesso, nella barra. Non sapevo che l'unica ragione per cui non funzionava senza era perché faceva riferimento allo script socket.io. La soluzione è stata cambiando: a: