Lectura e interpretación de un RSS con Javascript

  • Por
  • RSS
Modos de acceder a un archivo RSS externo por medio de Javascript, para mostrar los contenidos de ese archivo.
En el artículo anterior mostramos un modo de lectura de RSS por medio de programación en el servidor con PHP . Ahora vamos a ofrecer algunas notas, comentarios y problemas que podremos encontrar acerca del acceso a RSS por medio de programación en el cliente con Javascript.

En este artículo veremos pues varios mecanismos y aportaciones de diversos desarrolladores para implementar la lectura de un RSS mediante Javascript y Ajax. Para no decepcionar a nadie, aclaro de entrada que no vamos a explicar cómo hacer nosotros mismos un script Javascript para leer un RSS, sino comentar soluciones o complementos que existen y que han realizado otras personas.

Ventajas e inconvenientes del proceso de RSS en el cliente y el servidor

El desarrollador puede escoger, en muchos casos, si desea hacer un procesamiento en el cliente o el servidor. Las personas que entiendan un poco sobre desarrollo de aplicaciones web deberían saber de entrada qué ventajas e inconvenientes tiene cada opción, pero aun así, vamos a resumirlas ahora:

1.- Carga de procesamiento
Acceder a un RSS remoto lleva un tiempo para el servidor. Procesarlo e interpretarlo para acceder a sus resultados supone también cierta complejidad para una máquina y para ello se tendrá que tomar un determinado tiempo. Si analizamos la carga nuestro servidor al intentar acceder a un contenido externo, como un RSS a través de su URL, veremos que la página tarda un poco más de lo normal en procesarse. Por eso, si llevamos parte del procesamiento al cliente, podemos descargar nuestro servidor.

2.- Cross-Browser
La diversidad de clientes web genera una posible fuente de errores. Cada navegador tiene sus particularidades, por eso resulta complicado hacer aplicaciones que funcionen de la misma manera en todos los navegadores y sin errores. Las aplicaciones Cross-Browser son las que están diseñadas para funcionar en cualquier cliente web y estamos obligados a pensar en ello si queremos programar con Javascript aplicaciones compatibles. Utilizar un lector RSS en Javascript requerirá especial cuidado y quizás más cuidado en las actualizaciones de nuevos navegadores que puedan aparecer que si lo procesas todo con un lenguaje del servidor.

3.- Cross-Domain
Este es el problema más típico al intentar acceder a un RSS en otro dominio, debido a una restricción de seguridad que implementan los navegadores. Por ello, si intentas abrir una conexión Ajax para traerte el contenido de un RSS de otro dominio, obtendrás un mensaje de error o un fallo del funcionamiento de tu script. Este problema no lo tienes si accedes al contenido externo directamente con procesamiento en el servidor en lugar del cliente. Lo relatamos con detenimiento en el siguiente punto del artículo.

Problema del Cross-Domain en Ajax

Lo primero que debemos saber es que, desde aplicaciones en el lado del cliente con Javascript, no podemos acceder a datos que haya en dominios distintos del que estamos desarrollando. Este problema en realidad no es más que una medida de seguridad que implementan los navegadores, para que desde un dominio no se imite estar en otro, o se intente acceder a otros para provocar posibles agujeros de seguridad. Dado que en Ajax trabajamos con Javascript, la restricción Cross-Domain se aplica también a Ajax.

Así pues, tenemos que hacer alguna cosa para que podamos leer un RSS remoto para, por ejemplo, mostrar las novedades de otro dominio en el nuestro.

a) Poner el RSS que deseemos leer en un archivo en nuestro propio dominio. Esto lo podemos hacer de manera manual, subiéndolo por FTP.

b) Acceder al RSS por medio del servidor, con programación en PHP por ejemplo, y guardarlo en nuestro servidor antes de acceder al archivo por Ajax.

c) Utilizar un puente en el cliente para acceder al contenido externo por medio de otra tecnología distinta de Javascript, por ejemplo Flash. Para lo que existen algunos componentes como flXHR.

Soluciones para acceder a un RSS mediante Javascript

En el momento de escribir este artículo, lamentablemente, no he encontrado ninguna solución definitiva para el acceso a archivos RSS con Javascript y Ajax. Las soluciones que se encuentran están a medias, o poco documentadas, incluso con errores o fallos dependiendo del navegador.

Script Javascript moRSSload
Es un componente escrito en Javascript y PHP para lectura de RSS de dominios externos. Tiene implementada una caché PHP para recibir un archivo RSS con el servidor y guardarlo en él, antes de abrirlo con Javascript sin el problema del Cross-Domain.

Lector RSS Ajax de Martín Pulido
Un artículo del blog de Martín Pulido, que explica paso a paso a hacer un lector RSS sencillo con Ajax y Javascript. Tiene una solución del Cross-Domain por PHP .

Plugin jQuery: jFeed
Es un componente Javascript escrito con el framework Javascript jQuery para la lectura e interpretación de un archivo RSS con el cliente. Ofrece un sencillo proxy para solucionar el Cross-Domain, pero advierte que es meramente experimental no se debería utilizar en sitios públicos, pues podría dar problemas.

Ejemplo Mootools para lectura de un RSS
Este componente, que en mis pruebas con Explorer no ha funcionado (aunque sí en Firefox), es simplemente un ejemplo sobre cómo se podría hacer la lectura del XML del RSS utilizando el framework Javascript Mootools.

Como se ve, leer y procesar archivos RSS desde Javascript no es un problema trivial, aunque varios desarrolladores han hecho aproximaciones interesantes de las que podemos aprender.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Cristina

27/7/2010
PHP5: OBTENER RSS DADO UN DOMINIO
hola, quería preguntar si alguien sabe como se pueden OBTENER todos los RSS dado una determinada página, por ejemplo dado: www.elpaís.com, guardar todos sus rss en un array, para posteriormente procesarlos documentos individualmente, programando con php5.
Si alguien me pudiera decir algo, por favor ayudenme: cristinasb22@hotmail.com