如何在GAE之上运行WebSocket服务器?

时间:2010-11-06 19:56:38

标签: google-app-engine websocket

如何在Google App Engine之上运行WebSocket服务器?可能吗?会有可能吗?

10 个答案:

答案 0 :(得分:25)

有可能吗?

没有

您现在不能,因为GAE不允许通用入站套接字连接。每个请求也限制为30秒,但这可以通过自动重新连接和会话跟踪轻松解决。

有可能吗?

可能。

Google一直是WebSockets标准的最大(主要)推动者之一。如果他们在未来某个时候不支持它进入GAE,我会感到惊讶。请注意,WebSockets草案标准仍然处于不稳定状态,因此在标准更加稳固之前,Google可能会犹豫是否需要添加支持。

以下是GAE上WebSockets支持的错误:http://code.google.com/p/googleappengine/issues/detail?id=2535

请注意,Google员工表示它不在路线图上,但他们知道这会很有用。这是一个积极的答案,因为你从谷歌获得有关尚未公布的功能。我建议将您的声音添加到该bug中,以支持WebSocket支持。它不会伤害。

此外,根据您的应用程序,您可能会考虑很快可能获得GAE支持的Channel API:

EDIT(2015):Channels API现已上市(已有一段时间了)。

答案 1 :(得分:14)

所有这些答案都已过时。

渠道API已deprecated。 Google 强烈建议您使用Firebase

值得注意的是,Google现已发布了flexible environment

使用灵活的环境,您可以轻松地允许套接字连接,或使用Python 3。

答案 2 :(得分:9)

现在正式获得支持。

请参阅https://cloud.google.com/appengine/docs/python/channel/

编辑:支持Channel API,而不支持WebSockets。 Channel API建立在WebSockets上,但它不能直接访问WebSocket。我认为它对于典型的Web应用程序来说已经足够好了。

答案 3 :(得分:2)

你不能。

GAE将HTTP请求限制为30秒,WebSockets期望连接打开很长时间。

有可能吗?只有谷歌知道这一点。

答案 4 :(得分:2)

有几个人在另一台服务器的帮助下让websockets与GAE合作... checkout http://code.google.com/p/typhoonae/wiki/WebSockets

答案 5 :(得分:2)

自2019年1月9日起,它现已正式进入Beta版-但仅适用于App Engine flexible 。例如,请参见Python documentation。根据{{​​3}},它可以与任何语言一起使用。

答案 6 :(得分:1)

还有:https://cloud.google.com/appengine/docs/go/sockets/ 虽然这是实验性和非常低的水平。

答案 7 :(得分:1)

Google App Engine最近在App Engine Flexible Environment上启动了对Websockets的支持。您可以看一下他们的博客文章。

https://cloud.google.com/blog/products/application-development/introducing-websockets-support-for-app-engine-flexible-environment

答案 8 :(得分:0)

2019年6月

Flex的SLA现在支持对GAE的Websocket支持。

Hi everyone, I'm happy to announce that Websockets support 
for Flex is now Generally Available! We've made no changes since Beta 
but Websockets traffic is now subject to our SLA. 

We've also published documentation for this feature for all App Engine Flex languages.

请参见https://issuetracker.google.com/issues/35886348#comment285

答案 9 :(得分:0)

希望有所帮助,但现在似乎得到了支持。 2021年 [https://cloud.google.com/appengine/docs/flexible/java/using-websockets-and-session-affinity][1]