Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/07/2012, 02:11
Avatar de Celcius
Celcius
 
Fecha de Ingreso: febrero-2003
Ubicación: Lima - Perú
Mensajes: 652
Antigüedad: 21 años, 2 meses
Puntos: 5
Problema con Socket.io

Buenas madrugadas...
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(reqres){
    
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.usernamedata);
    });

    
// 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 ');
    });
}) 
index.html
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> 
cuando ingreso a la carpeta de la aplicacion y luego escribo "node app.js" me aparece el mensaje: "info - socket.io started" pero al visualizar la página veo el siguiente error en la consola:
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/');
Si alguien tiene alguna idea le quedaré muy agradecido... saludos!
__________________
"Si tú conocieras el don de Dios, y quién es el que te dice: 'Dame de beber,' tú Le habrías pedido a El, y El te hubiera dado agua viva.
Sn. Juan 4:19
Jesus