Amplify.js publicar suscribirse no funciona cuando publicar y suscribirse están en dos files separados

Estoy intentando que Amplify.js publique / suscriba para trabajar con 2 files.

Puedo hacer que funcione cuando el código es un file, pero no cuando la publicación está en un file y la suscripción está en otro file.

Aquí está el código donde la llamada para suscribirse y publicar está en el mismo file. Esto funciona.

<html> <head> <script type="text/javascript" src="./js/jquery-1.8.2.min.js"> </script> <script type="text/javascript" src="./js/amplify-1.1.2/amplify.min.js"> </script> </head> <body> <H1>My amp pub/sub page</H1> <script type="text/javascript"> alert("entering page"); amplify.subscribe("dataExample", function(param) { alert("In the amplify.subscribe function, param is: " + param.foo ); } ); alert("after line amplify.subscribe"); result = amplify.publish("dataExample", { foo: "bar" } ); alert ("After amplify.publish, result is " + result ); </script> </body> </html> 

El resultado es que imprime las alertas en el order esperado, como este:
'entrar en la página'
'after line amplify.subscribe'
'En la function amplify.subscribe, param es: bar'
'Después de amplify.publish, el resultado es verdadero'

Cuando coloco la suscripción y publico en files separados, no se invocará la function amplify.subscribe. Para esta testing, tengo dos browseres arriba (ambos Firefox). Ejecutar suscribirse en un browser, luego publicar en el otro.

Aquí está el código para suscribirse (simplemente corté la parte de publicación)

 <html> <head> <script type="text/javascript" src="./js/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="./js/amplify-1.1.2/amplify.min.js"> </script> </head> <body> <H1>My amp sub page</H1> <script type="text/javascript"> alert("entering page"); amplify.subscribe("dataExample", function(param) { alert("In the amplify.subscribe function, param is: " + param.foo ); } ); alert("after line amplify.subscribe"); </script> </body> </html> 

código para publicar (corté la parte de suscripción)

 <html> <head> <script type="text/javascript" src="./js/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="./js/amplify-1.1.2/amplify.min.js"> </script> </head> <body> <H1>My amp pub page</H1> <script type="text/javascript"> alert("entering page"); result = amplify.publish("dataExample", { foo: "bar" } ); alert ("After amplify.publish, result is " + result ); </script> </body> </html> 

Estoy usando Firefox versión 47.0.1
Tengo los mismos problemas cuando uso Chrome.

¿Alguien tiene alguna idea sobre esto?
¿Alguien tiene un conocimiento más profundo sobre esto, como
¿Dónde se almacenan los datos de publicación? ¿por cuanto time?
y cómo puedo ver si está allí.
¿Dónde está la suscripción buscando los datos?
¿La suscripción de publicación funcionará con dos files?

La publicación de datos no se almacena en ningún lado.

Las funciones de callback están almacenadas. Dentro de las variables normales en amplificar. Puede imaginar un map con nombres de events como teclas y la function de callback como valores.

Cuando publica con un nombre de evento, la callback para ese evento se recupera del map y se ejecuta con los datos que pasó.

El problema aquí es que el map es local para cada página, al igual que cualquier otra variable de JavaScript.

  • Por lo tanto, en la primera página solo se almacena la callback, pero no hay código dentro de la misma página que invoca el evento.
  • En su segunda página ya que no hay callback definida, por lo tanto, no hay nada para manejar ese evento.

Entonces, lo que está buscando es una forma de compartir las variables de JavaScript en todas las páginas. Una búsqueda rápida en SO reveló algunos bashs. Creo que deberían ayudarte a implementar lo mismo:

  • Uso de variable global en la página de recarga
  • session del browserAlmacenamiento. compartir entre tabs?
  • ¿Cómo enlazar el evento de cambio localStorage usando jQuery para todos los browseres?
    Intereting Posts