2010-11-06 10 views
29

¿Cómo puedo ejecutar un servidor WebSocket sobre Google App Engine? ¿Es posible? ¿Será posible?¿Cómo puedo ejecutar un servidor WebSocket encima de GAE?

+1

De 2010 a 2013, muchas cosas han cambiado. Ver el canal https://developers.google.com/appengine/docs/python/channel/?csw=1 –

+0

@JosepValls. ¿Esta solución está construida sobre el estándar WebSocket o es una tecnología específica de Google? – Pacerier

Respuesta

24

¿Es posible?

Puede no en este momento porque GAE no permite conexiones de socket entrantes genéricos. Cada solicitud también está limitada a 30 segundos, pero esto podría solucionarse fácilmente con la reconexión automática y el seguimiento de la sesión.

¿Será posible?

Probablemente.

Google ha sido uno de los mayores (principales) promotores del estándar WebSockets. Me sorprendería que no lo respalden en GAE en algún momento en el futuro. Tenga en cuenta que el borrador del estándar de WebSockets aún fluye, por lo que Google puede dudar en agregar soporte antes de que el estándar sea más sólido.

Aquí está el error de WebSockets apoyan en GAE: http://code.google.com/p/googleappengine/issues/detail?id=2535

Tenga en cuenta que un empleado de Google indica que no está en la hoja de ruta, pero que saben que sería útil. Es una respuesta tan positiva como la que obtienes de google sobre las funciones que no se han anunciado. Recomiendo agregar su voz a ese error a favor del soporte de WebSocket. No puede doler

También, dependiendo de la aplicación, se puede considerar la API de Canal, que probablemente tendrá el apoyo GAE pronto:

EDITAR (2015): la La API de canales está disponible ahora (lo ha sido por un tiempo).

+1

Consulte el canal https://developers.google.com/appengine/docs/python/channel/?csw=1 –

+1

I no puedo crear un canal en el lado del cliente. ¿Puedes responder esto http://stackoverflow.com/questions/34332222/unable-to-create-new-channel-in-javascript-of-channel-api –

+2

EDIT 2016: Canales ahora está en desuso ... –

2

No puede.

GAE limita las solicitudes de HTTP a 30 segundos, WebSockets espera tener una conexión abierta durante mucho tiempo.

¿Será posible? Solo Google sabe esto.

+1

El límite de solicitud de 30 segundos no es realmente un bloqueador principal. Sería fácil crear una capa que inicie una nueva conexión de WebSockets para la misma sesión antes de que caduque la anterior, de modo que nunca tenga vacíos en la comunicación. Solo permitir solicitudes entrantes HTTP es el verdadero asesino. – kanaka

+1

Websockets son bidireccionales (como lo es HTTP) pero se inician solo entrantes (de cliente a servidor). http://en.wikipedia.org/wiki/WebSockets –

+1

Y GAE también es saliente: use URL Fetch –

9

es apoyado oficialmente ahora.

Ver https://cloud.google.com/appengine/docs/python/channel/

EDITAR: la API de Canal es compatible, no WebSockets. Channel API se basa en WebSockets, pero no le da acceso directo a WebSocket. Supongo que es lo suficientemente bueno para aplicaciones web típicas.

+1

Para posteridad, la API de Canales es solo frontend-> back-end. No es bueno para las conexiones servidor-> servidor. –

+2

También está en el ocaso y dejará de funcionar a partir del 2017-10-31: https://cloud.google.com/appengine/docs/deprecations/channel – sengi

+0

https://i.ytimg.com/vi/xZ_JiU7L9Zk/hqdefault .jpg –

1

También está esto: https://cloud.google.com/appengine/docs/go/sockets/ Aunque es experimental y de muy bajo nivel.

+0

"Los enchufes están disponibles solo para aplicaciones de pago. No puede crear un socket de escucha, solo puede crear sockets de salida." –

10

Todas estas respuestas están desactualizadas.

La API del canal ha sido deprecated. Google fuertemente le recomienda usar Firebase.

También vale la pena señalar que Google ha lanzado el flexible environment.

Con el entorno flexible, puede permitir conexiones de socket fácilmente, o usar Python 3.

Cuestiones relacionadas