<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NO LA PELES! &#187; polling</title>
	<atom:link href="http://www.nolapeles.com/tag/polling/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nolapeles.com</link>
	<description>entérate de las cosas impelables en nolapeles.com</description>
	<lastBuildDate>Fri, 10 Feb 2012 18:17:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>¿Qué son los Webhooks?</title>
		<link>http://www.nolapeles.com/2009/08/27/que-son-los-webhooks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=que-son-los-webhooks</link>
		<comments>http://www.nolapeles.com/2009/08/27/que-son-los-webhooks/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 21:10:50 +0000</pubDate>
		<dc:creator>Gubatron</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tecnología]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[patrones]]></category>
		<category><![CDATA[polling]]></category>
		<category><![CDATA[programación web]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[webhook]]></category>
		<category><![CDATA[webhooks]]></category>
		<category><![CDATA[webservice]]></category>

		<guid isPermaLink="false">http://www.nolapeles.com/?p=702</guid>
		<description><![CDATA[Webhooks, un patrón de diseño tan simple que parece estúpido. Sin embargo, a partir de bloques se pueden construir las mas extravagantes estructuras. Aprende como funcionan y porque pueden llevar el Internet al próximo nivel cuando no haya mas necesidad de hacer polling. Las aplicaciones son innumerables.<h3>Contenido Relacionado</h3>
<ol>
		<li><a href="http://www.nolapeles.com/2009/10/05/la-historia-de-internet-en-8-minutos/" rel="bookmark">La historia de Internet en 8 minutos</a><!-- (5.6)--></li>
		<li><a href="http://www.nolapeles.com/2010/09/16/ie9-beta-presenta-fallas-con-interfaces-ajax/" rel="bookmark">IE9 Beta presenta fallas con interfaces Ajax</a><!-- (5.2)--></li>
	</ol>
]]></description>
			<content:encoded><![CDATA[<div id="attachment_722" class="wp-caption alignnone" style="width: 435px"><a href="http://www.nolapeles.com/wp-content/uploads/2009/08/webhooks.png" rel="lightbox[702]"><img class="size-full wp-image-722 " title="webhooks" src="http://www.nolapeles.com/wp-content/uploads/2009/08/webhooks.png" alt="webhooks logo" width="425" height="203" /></a><p class="wp-caption-text">webhooks logo</p></div>
<p>Alguna vez has programado algo y haz colocado funciones <strong>callbacks</strong>, o <strong>hooks</strong> en tu lógica?<br />
Que sucedería si aplicáramos esta practica de programación entre todos los servicios web en el Internet, fácilmente un salto evolutivo en la historia de la red a partir de algo tan sencillo que parece estúpido. Si eres un desarrollador web no puedes dejar de leer este artículo.<br />
<span id="more-702"></span></p>
<h3>Qué es un Hook?</h3>
<p>Por ejemplo, en Javascript, cuando se programa AJAX es común definir callbacks para cuando los HTTP Requests han terminado, estos <em>callbacks</em> o <em><strong>hooks</strong></em> sirven para hacer cosas como actualizar la interfaz gráfica.</p>
<p>La lógica de un <em>hook</em> es básicamente pasar una función <em>h</em> como parámetro a otra función <em>f</em>. Cuando llega el momento correcto <em>f</em> invoca la función <em>h</em>.</p>
<p>Veamos un ejemplo sencillo en Javascript de como utilizamos hooks o callbacks hoy en dia en programas que corren en un solo procesador.</p>
<pre><span style="color:green">// Definimos una funcion hook.
// ("..." representaría parámetros cualesquiera.)</span>
function h(...) {
  <span style="color:green">//código de función hook</span>
}

<span style="color:green">// Una función que recibe como parametro una función hook</span>
function f(h) {
   <span style="color:green">//lógica de la función</span>
   ...
   <span style="color:green">//luego en algún punto, cuando sea el momento correcto,
   //invocamos al hook</span>
   <strong>h(...)</strong>
}

<span style="color:green">//Así usamos a la función, pasamos el hook como parámetro</span>
f(h)</pre>
<h3>Entonces&#8230;</h3>
<p>Un Webhook es casi lo mismo que una función hook, la diferencia es que en vez de pasar tu hook a una función dentro de un programa local, <strong>invocamos un WebService definido por un tercero dándole la URL de nuestro WebService local o Webhook</strong>.</p>
<p>Cuando sea el momento adecuado el WebService remoto hará POST o GET para invocar tu Webhook notificando a tu sistema del evento que estabas esperando sin necesidad de hacer <strong>polling</strong>.</p>
<p>Generalmente tu Webhook tendrá que ser definido bajo ciertos estándares, lo mas probable es que el WebService remoto necesite invocar los Webhooks pasando ciertos parámetros, tu Webhook deberá soportar estos parámetros.</p>
<h3>Ejemplos y Aplicaciones</h3>
<p>No mas <em>polling</em>!, para empezar.</p>
<p>Cuando envías alguien a pagar con Paypal, o con otra API para procesamiento de pagos, generalmente el usuario sale por un momento de tu sitio web, pero en el formulario de Paypal, inicialmente pasamos como parámetros a Paypal URLs nuestras para que Paypal devuelva el usuario a nuestro sitio. De este modo no tenemos que estar haciendo <em>requests</em> (<em>polling</em>) a Paypal, esto es básicamente un Webhook primitivo, solo que no se le había puesto nombre.</p>
<p>Si empezamos a pensar mas en Webhooks, podemos empezar a ver a todos los Web Services como un gran repositorio de librerías asíncronas. Con el uso de Webhooks podemos por ejemplo pensar en implementar notificaciones en tiempo real sin necesidad de estar haciendo <em>polling</em>, pensemos por ejemplo en Chats tipo AJAX (saber si tu amigo esta escribiendo, o que acaba de escribir). Podríamos pasar URLs a entes remotos para que invoquen a nuestros callbacks justo cuando estén listos, eliminando la necesidad de hacer polling cada N segundos.</p>
<p>Ahi lo tienen, es tan simple que parece estúpido. No es una API, no es una tecnología, es solo un patron de diseño donde definimos hooks que pueden ser invocados por terceros via HTTP. Simple y Elegante.</p>
<h3>Enlaces Relacionados</h3>
<p><a rel="nofollow" href="http://vimeo.com/4537957">Presentación sobre WebHooks</a><br />
<a rel="nofollow" href="http://blog.webhooks.org/">Blog Oficial de Webhooks.org</a><br />
<a rel="nofollow" href="http://mitcho.com/code/hookpress/">Hookpress (plugin de webhooks para wordpress)</a></p>
<h3>Sobre Gubatron</h3>
<p><img style="float:left;margin:10px 10px" src="http://www.nolapeles.com/wp-content/uploads/2009/08/gubatron_union_square_apr_2008.png" alt="" /> Gubatron es un desarrollador de Software Venezolano con experiencia en desarrollo de aplicaciones web y software de internet para uso masivo. En su tiempo libre es un adicto a las noticias, analiza diferentes modelos de negocio y mercadeo, blogea, podcastea e identifica las tendencias tecnológicas generalmente con 2 años de adelanto. Se le puede reconocer como ex-desarrollador de LimeWire, fundador de <a rel="nofollow" href="http://www.wedoit4you.com">wedoit4you.com</a>, colaborador de <a rel="nofollow" href="http://www.frostwire.com">FrostWire</a>,  MyBloop.com y ahora <strong>autor invitado de NoLaPeles.com</strong></p>
<p><center><div align="center"><script type="text/javascript"><!--
google_ad_client = "pub-4974286288685153";
/* NoLaPeles 336x280, created 10/31/09 */
google_ad_slot = "7591641586";
google_ad_width = 336;
google_ad_height = 280;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div></center></p>
<h3>Contenido Relacionado</h3>
<ol>
		<li><a href="http://www.nolapeles.com/2009/10/05/la-historia-de-internet-en-8-minutos/" rel="bookmark">La historia de Internet en 8 minutos</a><!-- (5.6)--></li>
		<li><a href="http://www.nolapeles.com/2010/09/16/ie9-beta-presenta-fallas-con-interfaces-ajax/" rel="bookmark">IE9 Beta presenta fallas con interfaces Ajax</a><!-- (5.2)--></li>
	</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.nolapeles.com/2009/08/27/que-son-los-webhooks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

