Foros del Web » Programando para Internet » Jquery »

Obtener valor actual. Jquery+websocket

Estas en el tema de Obtener valor actual. Jquery+websocket en el foro de Jquery en Foros del Web. Hola hace un rato estoy haciendo un juego simple de estrategia... estoy utilizando websocket para realizar la conexion entre el cliente y el servidor. En ...
  #1 (permalink)  
Antiguo 17/11/2013, 16:08
Avatar de EmpireFX  
Fecha de Ingreso: marzo-2008
Ubicación: in da house
Mensajes: 60
Antigüedad: 16 años, 1 mes
Puntos: 3
Pregunta Obtener valor actual. Jquery+websocket

Hola hace un rato estoy haciendo un juego simple de estrategia... estoy utilizando websocket para realizar la conexion entre el cliente y el servidor. En la parte del cliente no puedo obtener la respuesta actual del servidor.

Aca hice un resumen del cliente, pueden problarlo.

Código HTML:
Ver original
  1.     <head>
  2.         <script type="text/javascript" src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
  3.         <script type="text/javascript">
  4.             localStorage.lastresponse = 'old';
  5.  
  6.             function init(){
  7.                 var host = "ws://echo.websocket.org";
  8.  
  9.                 socket = new WebSocket(host);
  10.                 socket.onopen    = function(msg){log("Welcome - status "+this.readyState); };
  11.                 socket.onmessage = function(msg){
  12.                     localStorage.lastresponse = msg.data;
  13.                     log("Received: "+msg.data);
  14.                 };
  15.                 socket.onclose   = function(msg){log("Disconnected - status "+this.readyState); };
  16.             }
  17.  
  18.             function log(msg){var log = document.getElementById("log"); log.innerHTML+="<br>"+msg; log.scrollTop = log.scrollHeight;}
  19.  
  20.             function send_msg(msg){ log('Sent: '+msg); socket.send(msg); }
  21.  
  22.             $(document).ready(function(){
  23.                 $('.boton').on('click', function () {
  24.                     $('.map').unbind().on('click', function (e) {
  25.                         send_msg('Rock it with HTML5 WebSocket');
  26.                         alert(localStorage.lastresponse);
  27.                         //console.log(localStorage.lastresponse);
  28.                         //delete localStorage.lastresponse;
  29.  
  30.                         e.stopPropagation();
  31.                     });
  32.                 });
  33.             });
  34.         </script>
  35.         <style type="text/css">
  36.             .map{width: 200px;height: 200px;background-color: green;}
  37.             #log{width: 400px; height: 120px;overflow-y: scroll;}
  38.         </style>
  39.     </head>
  40.     <body onload="init()">
  41.         <div class="map"></div>
  42.         <div id="log"></div>
  43.         <br>
  44.         <button class="boton">Crear unidad</button>
  45.     </body>
  46. </html>

Creas una unidad y seleccionas que parte del mapa(cuadro verde). El problema es que muestro por pantalla el valor anterior de localStorage.lastresponse, no el actual(siendo la respuesta actual del servidor que deberia ser 'Rock it with HTML5 WebSocket').

Estube probando varias cosas pero sin resultado, espero que alguien me guie y mejor si explica el porque, que no logro entenderlo del todo.

Saludos

Última edición por EmpireFX; 17/11/2013 a las 16:12 Razón: error
  #2 (permalink)  
Antiguo 20/11/2013, 15:00
Avatar de EmpireFX  
Fecha de Ingreso: marzo-2008
Ubicación: in da house
Mensajes: 60
Antigüedad: 16 años, 1 mes
Puntos: 3
Respuesta: Obtener valor actual. Jquery+websocket

Ya lo solucione haciendo un callback.

Código Javascript:
Ver original
  1. function send_msg(msg, callback){
  2.    socket.send(msg);
  3.    socket.onmessage = function(got){
  4.       callback(got);
  5.    };
  6. }
  7.  
  8. var msg = 'Esperar a que termine send_msg();':
  9. send_msg(msg, function(respuesta){
  10.     alert('El servidor respondio: '+respuesta);
  11. };

Etiquetas: javascript, valor, variable
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 01:31.