Ando peleando con este problema, he buscado como loco y la verdad no he podido solucionar mi problema... he seguido el tutorial de un chat en node, al ejecutar el server, me aparece el mensaje que socket.io está corriendo bien.. pero al ver la página en la consola del firebug me aparece que el método "io" no ha sido definido... les copio mi codigo a ver si me pueden echar una mano con este tema engorroso para mi:
app.js
Código PHP:
var app = require('express').createServer(),
io = require('socket.io').listen(app);
app.listen(3000);
// routing
app.get('/', function(req, res){
res.sendfile(__dirname + '/index.html');
});
// (Creacion del objeto). Relacion de nombres de usuarios que estan actualmente conectado al chat
var usernames = {};
// todo este codigo tiene que ver con el funcionamiento del chat.
io.sockets.on('connection',function(socket){
// cuando el cliente emite 'sendchat', este escucha y ejecuta.
socket.on('sendchat',function(data){
// le diremos al cliente que ejecute 'updatechat' con 2 parametros
io.sockets.emit('updatechat', socket.username, data);
});
// cuando el cliente emite un evento 'adduser', el servidor escucha y ejecuta
socket.on('adduser', function(username){
// almacenamos el username en el socket de sesion para este cliente
socket.username = username;
// agregamos el nombre de usuario del cliente a la lista global
usernames[username] = username;
// informamos al cliente que se ha conectado
socket.emit('updatechat', 'SERVER ', ' te has conectado');
// informamos globalmente (todos los clientes) que alguien se ha conectado
socket.broadcast.emit('updatechat', 'SERVER ', username + ' se ha conectado' );
// actualizo la lista de usuarios en el chat, lado del cliente.
io.sockets.emit('updateusers',username);
});
// cuando el usuario se desconecte... llevar a cabo esto:
socket.on('disconnect', function(){
// remover el nombre de usuario de la lista global de nombres de usuarios
delete usernames[socket.username];
// actualizamos la lista de usuarios en el chat: lado del cliente
io.sockets.emit('updateusers', usernames);
// informamos globalmente que un determinado cliente se ha desconectado
socket.broadcast.emit('updatechat', 'SERVER ', socket.username + ' se ha desconectado ');
});
})
Código HTML:
<!DOCTYPE HTML> <html lang="es"> <head> <meta charset="UTF-8"> <title>Bienvenidos</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> <script src="/socket.io/socket.io.js"></script> <script type="text/javascript"> var socket = io.connect('http://localhost:3000/'); // cuando se conecte con el servidor, pregunta por un nombre de usuario con un callback anonimo socket.on('connect', function () { // llama al lado del servidor, funcion 'adduser' y envia un parametro (valor del prompt) socket.emit('adduser', prompt("cual es tu nombre?")); }); // escuchando: en cualquier momento que el servidor emite un 'updatechat', esto actualiza el cuerpo del chat socket.on('updatechat', function(username, data){ $('#conversacion').append('<b>'+username+'</b>'+" "+ data + '<br />'); }); // escuchando: en cualquier momento que el servidor envie un 'updateusers', esto actualiza la lista de usuarios socket.on('updateusers', function(data){ $('#usuarios').empty(); $('#usuarios').append('<div>'+ data +'</div>'); }); // Cuando cargue la pagina: $(function(){ // cuando el cliente haga clic en Enviar $('#datasend').click(function(){ var message = $('#data').val(); $('#data').val(''); // le decimos al servidor que ejecute 'sendchat' y enviar solo un parametro socket.emit('sendchat', message); }); // cuando el cliente presione ENTER con su teclado. $('#data').keypress(function(e){ if(e.which==13){ $(this).blur(); //con la siguiente linea llamo a la funcioan #datasend $('#datasend').focus().click(); } }); }); </script> </head> <body> <div style="float: left; width: 100px; border-right: 1px solid black; height: 300px;padding: 10px; overflow: scroll-y;"> <b>Usuarios</b> <div id="usuarios"></div> </div> <div style="float: left; width: 300px; height: 250px;padding: 10px; overflow: scroll-y;"> <div id="conversacion"></div> <input id="data" style="width: 200px" /> <input type="button" id="datasend" value="Enviar" /> </div> </body> </html>
Código HTML:
"NetworkError: 404 Not Found - http://localhost:3000/socket.io/socket.io.js"socket.io.jsReferenceError: io is not defined[IMG]chrome://firebug/content/blank.gif[/IMG]var socket = io.connect('http://localhost:3000/');