2010-12-05 29 views
7

La documentación oficial no menciona el soporte, pero me pregunto si es posible conectar un programa de cliente en lugar de javascript para usar Channel API. Actualmente estoy usando la técnica básica de sondeo desde una aplicación de Windows, tener la API del canal mejoraría la capacidad de respuesta y reduciría bastante la carga.Consumir Google Channel API en C#

Supongo que como un hack feo, podría renderizar un objeto webbrowser oculto en el fondo y tener javascript ejecutándose allí, y luego alimentarme de eso. ¿Hay una mejor solución?

Respuesta

10

El uso de XMPP no funcionará, porque Channel API solo habla de XMPP entre los servidores de Google: el tráfico XMPP no está expuesto al navegador (puede verificar esto usando FireBug o la ventana del desarrollador de Chrome para ver los contenidos de las solicitudes de "enlace", verás que se envía JSON hacia abajo).

Como dijiste, la única solución actual viable sería ajustar un control del navegador ejecutando solo el javascript suficiente para conectarte al canal en tu aplicación, y usarlo para señalizar tu aplicación C# cuando reciba mensajes. Clunky, pero viable.

Si bien también podría realizar ingeniería inversa y luego simular qué está haciendo el iframe y consumir directamente los mensajes JSON, su aplicación podría romperse de muchas maneras a medida que cambien los detalles de implementación, y lo harán.

Dicho esto, tengo curiosidad acerca de cuántas personas querrían tener una biblioteca nativa de C# y qué tipo de aplicaciones desea escribir con ella. Aplicaciones WP7? Aplicaciones cliente de Windows? Aplicaciones de servidor? He creado una solicitud de función para App Engine aquí:

http://code.google.com/p/googleappengine/issues/detail?id=4206

favor Upvote que si usted está interesado, y cuantos más detalles/convincentes casos de uso se puede nombrar, mejor.

Gracias!

+0

Te hubiera votado si pudiera, pero mis 5 puntos de reputación no me dejarán. Sin embargo, he encontrado el problema en el rastreador de problemas de appengine. – savagepanda

+0

@Moshie, sugerí usar directamente XMPP en lugar de Channel API, si era factible para su aplicación. Las personas estarían interesadas en conocer la API ** general ** para interactuar con la API del canal. De esa manera, también podemos tener bibliotecas nativas para otros idiomas. Hubo una discusión sobre esto en los grupos no hace mucho tiempo. –

+0

Muy buen punto: puede omitir completamente la API del canal y usar XMPP directamente.Necesitarás alguna forma de firmar al usuario en un servicio XMPP, y agregar el bot a su lista (o tener un punto final que acepte mensajes sin agregar el bot a la lista). Una cantidad de trabajo no trivial pero definitivamente posible, ¡y bonita! –

3

Si es posible, puede pensar en usar directamente XMPP. Hay several para C#.

Es posible que desee obtener una copia de FireFox + FireBug. Luego eche un vistazo a la pestaña 'net' de FireBug, mientras juega con alguien demo app (o haga la suya). Debería poder seguir las solicitudes y luego emularlas en su código C#.

aclaración: No estoy sugiriendo utilizar XMPP para hablar con el API canal pero para la comunicación entre la aplicación cliente y la aplicación de App Engine. Sugerí usar FireBug porque será muy claro que el tráfico es JSON.

+0

fiddler reventado, confirmó lo que Moishe dijo a continuación, parece que está volviendo como Json, no como xmpp. – savagepanda

+0

Sugería usar XMPP en lugar de Channel API. Si usar directamente XMPP es una opción, simplemente eliminará una capa adicional de puntos de falla (la API del canal). –