lunes, 2 de septiembre de 2013

Ejecutando SignalR con Mono

Anteriormente en NoCompila hicimos explicamos una pequeña demo de SignalR que sincronizaba la posición de un div en todos los navegadores conectados a una página. El ejemplo que colgamos está alojado en un servidor linux con mono.

Hace unos meses he empezado a jugar con mono y es genial, poder utilizar .net en entornos no windows desarrollando con Visual Studio es genial, peeero tiene sus defectillos. Como dice Rob Ashton  en Change It up “Mono me encanta, cuando funciona”. Mono funciona bien con casi todo, pero actualmente Miguel Icaza y sus chicos están centrados en el desarrollo multiplataforma de aplicaciones para móviles con Xamarin y pequeños detalles no relacionados con este entorno puede que no estén entre sus prioridades.
En el caso de SignalR dicen que funcionan en mono, pero lo cierto es que no fui capaz de trabajar con ninguna versión subida a nuget estable (1.x) en el momento de escribir estas líneas.

Buceando por internet, descubrí que habían solucionado el error. Desgraciadamente, aunque el error lo han solucionado el error hace tres meses, no parece que lo vayan a publicar hasta la versión 2.0. En la nueva versión están utilizando owin tal y como explica David Fowler(uno de los creadores del proyecto) la implementación por defecto de httplistener de owin no funciona en mono.

Esto provoca que la versión 2.0 SignalR solo soportará selfhost applications en mono. Con este tipo de aplicaciones la comunicación con otra aplicación web ya no será tan sencilla, ya que no compartirán sesión y dependiendo donde la alojemos tendremos problemas con los navegadores porque por motivos de seguridad no está permitido hacer peticiones de un dominio a otro y habría que utilizar otras técnicas para solucionarlo.

Espero que cambien esta situación, pero por ahora lo único que hay que hacer es clonar el repositorio colocarnos en el tag que nos interese (1.x), aplicar los cambios de 57e1c98, compilar y listo, SignalR con mono.

No hay comentarios:

Publicar un comentario