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>
¿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
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) –
No importa, lo tengo trabajando. Gracias. –