Aca hice un resumen del cliente, pueden problarlo.
Código HTML:
Ver original
<html> <head> <script type="text/javascript"> localStorage.lastresponse = 'old'; function init(){ var host = "ws://echo.websocket.org"; socket = new WebSocket(host); socket.onopen = function(msg){log("Welcome - status "+this.readyState); }; socket.onmessage = function(msg){ localStorage.lastresponse = msg.data; log("Received: "+msg.data); }; socket.onclose = function(msg){log("Disconnected - status "+this.readyState); }; } function log(msg){var log = document.getElementById("log"); log.innerHTML+="<br>"+msg; log.scrollTop = log.scrollHeight;} function send_msg(msg){ log('Sent: '+msg); socket.send(msg); } $(document).ready(function(){ $('.boton').on('click', function () { $('.map').unbind().on('click', function (e) { send_msg('Rock it with HTML5 WebSocket'); alert(localStorage.lastresponse); //console.log(localStorage.lastresponse); //delete localStorage.lastresponse; e.stopPropagation(); }); }); }); </script> <style type="text/css"> .map{width: 200px;height: 200px;background-color: green;} #log{width: 400px; height: 120px;overflow-y: scroll;} </style> </head> <body onload="init()"> <br> </body> </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