Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/07/2014, 18:59
Avatar de Djoaq
Djoaq
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 12 años, 1 mes
Puntos: 38
Respuesta: socket remoto

Hola varias cosas!

la primera :

Código HTML:
Ver original
  1. <script src="https://cdn.socket.io/socket.io-1.0.6.js"></script>

Esto no debería ir a así !
Ahora estas intentando hacer cross-domain por eso te falla ..

Te explico :
nodejs cuando arrancas tu app el ya genera la ruta al socket.io
Este debe ser tu código mas o menos de servidor nodejs :

Código Javascript:
Ver original
  1. //creamos el server
  2. var app = require('http').createServer(handler)
  3. var io = require('socket.io')(app);
  4. var fs = require('fs');
  5. //importamos librerías y asociamos server el método listen para que escuche en el puerto 8080
  6. app.listen(8080);
  7.  
  8. //esta función maneja y enruta la petición de req (request) y la respuesta res (response)
  9. function handler (req, res) {
  10.   fs.readFile(__dirname + '/index.html', //aqui la dirección podria ser node.php
  11.   function (err, data) {
  12.     if (err) {
  13.       res.writeHead(500);
  14.       return res.end('Error loading index.html');
  15.     }
  16.  
  17.     res.writeHead(200);
  18.     res.end(data);
  19.   });
  20. }
  21.  
  22. io.on('connection', function (socket) {
  23.  
  24. console.log(socket.id);
  25. //cuando se establece la comunicación
  26. //aqui hacemos todo el trabajo con los clientes/sockets conectados
  27. //socket.io dispone de 2 eventos emit y on
  28. //cuando es emit enviamos desde el servidor y cuando es on hacemos algo cuando recibamos
  29.   socket.on('peticion', function () {
  30. //Se dispara este console log porque desde el navegador le enviamos el evento
  31.   console.log("Recibo una petición!");
  32. // y nosotros respondemos
  33.      socket.emit('respuesta', { llave: 'valor' });
  34.   });
  35. });



En resumen , primero al arrancar node creamos la ruta al script para el cliente y el manejador de rutas.

Luego del lado del cliente :

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2.     <head>
  3.         <title></title>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5.         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  6.        <script src="http://localhost:8080/socket.io/socket.io.js"></script>
  7.         <script>
  8.             var socket = io.connect('http://localhost:8080');
  9.             function enviarPeticion(){
  10.              socket.emit("peticion");
  11.             }
  12.             socket.on("respuesta",function(datos){
  13.                alert(datos.llave);
  14.               });
  15.         </script>
  16.     </head>
  17.     <body>
  18.         <button onclick="enviarPeticion()"></button>
  19.     </body>
  20. </html>
Cuando pulsemos el botón haremo un emit y nodejs recibira una petición que desencadenara el evento respuesta y le enviará al navegador un json .

Un saludo a tod@s!

Última edición por Djoaq; 30/07/2014 a las 19:07