Saltearse al contenido

Push Server

Descripcion

Histrix incorpora un servidor de notificaciones push basado en Rachet.

Inicio

Para iniciar el servidor push ejecutamos el comando

Ventana de terminal
./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!']);