Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] sockets en javascript

Estas en el tema de sockets en javascript en el foro de Javascript en Foros del Web. Hola a todos. No estoy seguro si es aquí o en el foro de php, no obstante empezaré por aquí a ver si es ese ...
  #1 (permalink)  
Antiguo 22/07/2015, 14:26
 
Fecha de Ingreso: enero-2006
Mensajes: 76
Antigüedad: 18 años, 3 meses
Puntos: 1
sockets en javascript

Hola a todos.

No estoy seguro si es aquí o en el foro de php, no obstante empezaré por aquí a ver si es ese mi error.

Estoy desarrollando una aplicación con sockets, el servidor en php y el cliente en javascript.

La parte del servidor hasta donde yo se, pues me va funcionando, pero la de javascript, le pongo trazas (alertas en algunas partes del código para ver si entra en alguna función) y no hace lo que yo quiero.

Entonces no sé si estoy haciendo algo mal en javascript.

Pondré el código del servidor, después el cliente y después lo que obtengo por consola y navegador.

Código PHP:
Ver original
  1. <?php
  2. $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
  3. socket_bind($socket,'127.0.0.1',8085);
  4. socket_listen($socket);
  5.  
  6. //creamos un array para guardar los clientes
  7. //$clientes = array();
  8. //creamos un contador de clientes
  9. $i=0;
  10.  
  11. echo ("esperando el porvenir");
  12. while(true){
  13.     $client[++$i]=socket_accept($socket);
  14.  
  15.     $input = socket_read($client[$i], 1024);
  16.  
  17.     $salida=preg_replace("\s", "", $input);
  18.     echo ($salida);
  19.  
  20.  
  21.     socket_write($client[$i], $input ."\n", 1024);
  22.     socket_close($client[$i]);
  23.    
  24. }
  25.  
  26. socket_close($socket);
  27.  
  28.  
  29. ?>

ahora el código javascript:
Código Javascript:
Ver original
  1. <?php ob_start(); ?>
  2. <?php
  3.  include 'clase_sesion.php';
  4.  
  5.  $objeto_sesion=new clase_sesion();
  6.         $objeto_sesion->sesion();
  7.  //si no tiene sesion abierta, se le redirige al index
  8.   if (!isset($_SESSION['member_id']))
  9.         {
  10.             header("Location: index.php");
  11.         }
  12. $nombre_sesion=$_SESSION['nombre'];
  13.  
  14. ?>
  15. <!DOCTYPE html>
  16. <html>
  17. <head>
  18. <title></title>
  19. <script type="text/javascript">
  20.   var nomb="<?php echo $nombre_sesion; ?>";
  21.   //alert("paso1");
  22.   socket= new WebSocket('ws://127.0.0.1:8085/paginajuegos/servidor.php');
  23.  
  24.   socket.onopen=function(){
  25.       alert("paso2");
  26.       socket.send(nomb);
  27.   }
  28.  
  29.  
  30.   socket.onmessage=function(s)
  31.   {
  32.       alert('el servidor dice ' + s);
  33.   }
  34. </script>
  35. </head>
  36. <body>
  37. </body>
  38. </html>
  39.  
  40. <?php ob_flush(); ?>

Para ejecutar la aplicación, tengo un archivo .bat para ejecutar el servidor como un servicio de windows, y así tenerlo en marcha.

Al ejecutarlo desde la consola, me aparece el mensaje "esperando el porvenir" (es una traza mia para saber que está funcionando el código), con lo que me indica que está a la espera escuchando en el puerto 8085. Cuando ejecuto el cliente en el navegador en mi localhost, en la consola me aparecen unos warnings, pero eso es ahora porque intento imprimir el recurso del socket, si comento el echo de php, he intengo imprimir algo cuando detecta una nueva conexión, lo realiza correctamente.
Pero en el cliente, tengo dos alert, para saber si el código llega hasta donde tengo los alerts (son trazas mias), y el alert("paso1"), si que me aparece, pero el alert("paso2"), no aparece, con lo que deduzco que no entra en la función. Hasta donde yo se, esa función es para establecer la conexión con el servidor, pero el servidor acepta la conexión nada más hacer " socket= new WebSocket('ws://127.0.0.1:8085/paginajuegos/servidor.php');", y esa función sólo es un "apreton de manos" entre el servidor y el cliente.

Mi duda es, ¿Porqué no entra en esa función (socket.onopen(....){} )?
No sé si se me está pasando algo, se me ha olvidado algo, o simplemente no estoy entendiendo bien la tecnica.

Saludos y gracias de antemano.

Última edición por xonil; 22/07/2015 a las 14:36 Razón: Me falto el código de javascript
  #2 (permalink)  
Antiguo 22/07/2015, 16:36
 
Fecha de Ingreso: junio-2013
Mensajes: 23
Antigüedad: 10 años, 10 meses
Puntos: 1
Respuesta: sockets en javascript

hola, se que no responde tu pregunta directamente pero podría ayudarte:

https://code.google.com/p/phpwebsocket/

trae un ejemplo muy sencillo de como establecer conexión entre javascript y php.
  #3 (permalink)  
Antiguo 05/08/2015, 16:49
 
Fecha de Ingreso: enero-2006
Mensajes: 76
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: sockets en javascript

Lo solucione cogiendo un servidor ya hecho para un chat, ahora mismo lo estoy modificando y entendiendo su funcionamiento.

Gracias.

Etiquetas: cliente, servidor, sockets
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:25.