2010-11-06 58 views
29

如何在Google App Engine上運行WebSocket服務器?可能嗎?會有可能嗎?如何在GAE之上運行WebSocket服務器?

+1

從2010年到2013年,很多事情都發生了變化。請參閱頻道https://developers.google.com/appengine/docs/python/channel/?csw=1 – 2013-10-22 23:35:48

+0

@JosepValls,該解決方案是基於WebSocket標準構建的,還是Google特有的技術? – Pacerier 2014-05-13 04:59:24

回答

24

可能嗎?

號你現在不能因爲GAE不允許通用入站套接字連接。每個請求也被限制爲30秒,但這可以通過自動重新連接和會話跟蹤輕鬆解決。

有可能嗎?

也許。

谷歌一直是WebSockets標準中最大的(主要)推動者之一。如果他們不在未來某個時候將其支持推向GAE,我會感到驚訝。請注意,WebSockets草案標準仍然不變,所以Google可能會猶豫在標準更加穩固之前添加支持。

這裏是錯誤的的WebSockets在GAE支持:http://code.google.com/p/googleappengine/issues/detail?id=2535

注意,一個谷歌員工表示這不是在路線圖上,但他們知道這將是有益的。這就像你從谷歌獲得有關尚未公佈的功能的正面答案。我建議您將該語音添加到該錯誤中,以支持WebSocket支持。它不會傷害。

另外,根據您的應用程序,你可以考慮在通道API,它可能將不得不GAE支持推出:

EDIT(2015):在渠道API現在可用(已經有一段時間了)。

+1

請參閱頻道https://developers.google.com/appengine/docs/python/channel/?csw=1 – 2013-10-22 23:35:02

+1

我我無法在客戶端創建頻道。您可以請回答這個 http://stackoverflow.com/questions/34332222/unable-to-create-new-channel-in-javascript-of-channel-api – 2015-12-17 11:56:21

+2

編輯2016年:頻道現在已被棄用... – 2016-12-06 10:09:13

2

你不能。

GAE將HTTP請求限制爲30秒,WebSockets期望長時間打開連接。

有可能嗎?只有Google知道這一點。

+1

30秒的請求限制並不是真正的主要阻止者。在舊請求過期之前創建一個爲同一會話啓動一個新的WebSocket連接的層將很容易,這樣您就不會在通信中留下任何空白。只允許入站HTTP請求是真正的殺手。 – kanaka 2010-11-06 21:21:43

+1

Websockets是兩種方式(與HTTP一樣),但它們僅從入站(從客戶端到服務器)開始。 http://en.wikipedia.org/wiki/WebSockets – 2010-11-06 21:31:31

+1

而且GAE也是outbound:使用URL Fetch – 2010-11-06 21:32:23

9

它現在正式支持。

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

編輯:通道API支持,而不是WebSockets的。 Channel API建立在WebSocket上,但它不能直接訪問WebSocket。我認爲這對典型的Web應用程序來說已經足夠了。

+1

For後臺,Channels API只是前端 - >後端。這對服務器 - >服務器連接沒有好處。 – 2016-11-01 20:53:47

+2

這也是日落,並將於2017-10-31停止工作:https://cloud.google.com/appengine/docs/deprecations/channel – sengi 2017-07-18 11:53:23

+0

https://i.ytimg.com/vi/xZ_JiU7L9Zk/hqdefault .jpg – 2017-10-13 07:25:35

10

所有這些答案都是過時的。

通道API已被deprecated。谷歌強烈建議您使用​​。

還值得注意的是,谷歌現在已經發布了flexible environment

在靈活的環境中,您可以輕鬆地允許套接字連接或使用Python 3.

相關問題