2014-02-16 145 views
1

我正在研究一個我想支持iOS/Android/Browser的遊戲,並且認爲Websockets就是我想要用於通信的東西。我使用python,因此發現我應該使用Tornado。在後端處理HTTP和websocket連接

我想了解websockets更好一點,並將它們集成到瀏覽器中。

  1. 通過websocket連接的消息是否也包含連接的HTTP cookie?如果沒有,我可以發送它嗎?
  2. 網頁的HTTP連接如何鏈接到websocket連接?我的意思是我怎麼知道他們來自服務器端的同一個webapp?
  3. Tornado wiki page在性能部分說,Tornado可以用nginx作爲前端。這是如何運作的?我認爲Tornado和nginx必須在不同的機器上運行,因爲它們都在端口80上偵聽,也因爲nginx不理解WS協議。我錯過了什麼?

此外,如果有人能指出我的任何資源,我可以閱讀關於Tornado或websocket的任何資源,這可以幫助我。

回答

1
  1. websocket通過向服務器發送一個普通的http請求來建立,這個請求將包含域的所有存儲的cookie。如果您爲本地實現了一個本地實現Android可以使用像Autobahn|Android這樣的庫,API允許您爲websocket握手設置cookie。

  2. 您可以在第一次加載頁面時設置cookie以維護會話標識符。

  3. 在那種情況下,他們將在運行4個龍捲風實例(在不同的端口,而不是端口80)和Nginx的上端口80作爲負載平衡器,擴頻傳入客戶端請求到龍捲風實例,請參見running Tornado and Nginx on same server用於配置示例。 Nginx 的最新版本支持websockets,請參閱例如nginx + python + websockets

+0

儘管建立WebSocket連接的初始HTTP握手確實發送HTTP cookie,但WebSocket消息不會。每個消息開銷的減少是WebSocket的優勢之一。這裏也不需要Cookie,因爲連接最初由Cookie標識,它是持久的,並且通過連接來標識消息。 – gzost