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<?php
//creamos un array para guardar los clientes
//$clientes = array();
//creamos un contador de clientes
$i=0;
echo ("esperando el porvenir");
while(true){
echo ($salida);
}
?>
ahora el código javascript
:
Código Javascript
:
Ver original<?php ob_start(); ?>
<?php
include 'clase_sesion.php';
$objeto_sesion=new clase_sesion();
$objeto_sesion->sesion();
//si no tiene sesion abierta, se le redirige al index
if (!isset($_SESSION['member_id']))
{
header("Location: index.php");
}
$nombre_sesion=$_SESSION['nombre'];
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
var nomb="<?php echo $nombre_sesion; ?>";
//alert("paso1");
socket= new WebSocket('ws://127.0.0.1:8085/paginajuegos/servidor.php');
socket.onopen=function(){
alert("paso2");
socket.send(nomb);
}
socket.onmessage=function(s)
{
alert('el servidor dice ' + s);
}
</script>
</head>
<body>
</body>
</html>
<?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.