2012-10-30 33 views
15

我正在進行一項科學實驗,其中大約有二十個測試人員用對彼此進行回合制遊戲。現在,它是一個帶有WSGI接口的Python Web應用程序。我想通過websockets增加可用性:當所有玩家都輪到他們時,我想通知所有客戶更新他們的狀態。現在,每個人都必須等待轉彎超時,或者不斷重新加載並等待「轉彎仍在進行中」錯誤消息不再出現(有效等待)。我可以通過多個websocket庫的文檔閱讀,我理解websockets是如何工作的,但我不確定混合WSGI和websockets的體系結構:我可以在同一個進程中有一個websockets和一個WSGI服務器(並且if所以,如何使用真正的任何websockets庫),並從WSGI處理程序調用my_websocket.send_message(),或者我應該有一個單獨的websockets服務器,並做一些IPC?或者我不應該混合它們呢?將python應用程序中的websockets和WSGI結合起來

編輯,6個月後:我最終開始一個單獨的websockets服務器進程(使用Autobahn),而不是將其與WSGI服務器集成。原因在於分離它們更容易,更簡潔,並且從WSGI流程(服務器到服務器通信)與websockets服務器交談非常直接,並且首次嘗試使用websocket-client

+0

如果你使用的是哪個python web框架,你正在使用哪一個? – John

+0

現在沒有,但我願意接受任何建議。 – Simon

+0

在這種情況下,我第二oberstet的建議使用燒瓶。 – John

回答

14

下面是一個例子,你想要做什麼:

它運行一個WSGI web應用程序(基於瓶在這種情況下,但可以是任何WSGI符合),加上一個WebSocket服務器在1個服務器和1個端口下。

您可以從Web處理程序中發送WS消息。 Autobahn還在WebSocket上提供了PubSub,這極大地簡化了通知的發送(通過WampServerProtocol.dispatch),就像你的情況一樣。

披露:我是高速公路的作家和工作Tavendo。

+0

太棒了,這正是我一直在尋找的!另外,我還不知道有關Websockets的協議。 – Simon

+0

有關WAMP(= RPC + PubSub over WebSocket)的快速介紹,請查看http://wamp.ws/ – oberstet

+0

Busted gitub鏈接,並且新版本似乎不是WSGI應用程序... – pjz

相關問題