Push Server
Descripcion
Histrix incorpora un servidor de notificaciones push basado en Rachet.
Inicio
Para iniciar el servidor push ejecutamos el comando
./histrix push-server [0.0.0.0:8888]Esto iniciara el servidor de notificaciones en servidor local en el puerto 8888.
Uso
Se puede utilizar el servidor desde javascript o PHP
Publicación de un Evento
La publicación de un evento se puede realizar tanto desde PHP como javascript
PHP Para Realizar una publicación desde PHP (o en un xml de histrix).
\Histrix\Pusher\Event::publish(nombre_del_canal, (array) contenido ); \Histrix\Pusher\Event::publish( 'nueva_oferta: id_certificado', ['xml' => 'oferta_crud.xml', 'user' => 'user_id'] );Ejemplo de inclusión en un XML de histrix.
<?xml version="1.0" encoding="UTF-8"?> <histrix tipo="nosql" evento="insert"> <title>Oferta</title> <obs/> <form > <table id="HAC_OFERTAS" label="Oferta"> <ejecuta>
<![CDATA[ \Histrix\Pusher\Event::publish( 'nueva_oferta', ['xml' => 'oferta_crud.xml', 'user' => 'user_id'] ); loger('notifico oferta');
]]> </ejecuta> <field id="id_oferta" id_temp="id_oferta"> ....Subscripción a eventos
Para poder recibir un evento debemos estar subscriptos al canal correspondiente previamente.
javascript En Histrix la implementación de websockets utiliza la librería de abstracción: Autobahn (https://github.com/crossbario/autobahn-js)
Subscripción Ejemplo de subscripción al servidor de notificaciones push
Histrix.wsConnection = new ab.Session('ws://ip_servidor:8888', function() { Histrix.wsConnection.subscribe('id_base:canal', function(topic, envelope) { Histrix.showMsg(topic + envelope.user+' ' + envelope.data.path); }); }, function() { Histrix.showMsg('No WebSocket Available',null, {type:'info' ,'timeOut': 300}); console.warn('WebSocket connection closed'); }, {'skipSubprotocolCheck': true} );Publicación Ejemplo de publicación. (suponemos que ya esta abierta la conexión)
Histrix.wsConnection.publish('id_base:canal', ['Hello, world!']);