[英]WSGI compliant component with web socket client?
我正在嘗試將RESTful響應器集成到Crossbar應用程序中,最適合的似乎是WSGI服務 。 理想情況下,此服務應該是發布/訂閱基礎結構其余部分的一部分,一方面可以接收WAMP事件,另一方面可以響應HTTP請求。
困難在於運行一個事件循環,該事件循環允許異步Web套接字事件,並另外提供符合WSGI的組件。 在我看來, Pulsar應該能夠做到這一點,但是我還無法弄清楚如何設置它,沒有可用的示例能夠確切地說明這種用例。
value = None
class Foo(ApplicationSession):
def onJoin(self, details):
yield self.subscribe(self.bar, 'bar')
def bar(self, data):
value = data
app = Flask(__name__)
@app.route('/')
def baz():
return value
if __name__ == '__main__':
runner = ApplicationRunner('ws://127.0.0.1:8080', 'test')
runner.run(Foo, start_reactor=False)
# now what?
上面演示了兩個部分,一個Autobahn WAMP客戶端和一個Flask WSGI組件。 如何並行運行這兩種方法,從而允許一個線程通過HTTP和Web套接字接收事件? 我並不特別在乎Python的版本或底層庫(Twisted,asyncio,Pulsar,Flask),我只是想以某種方式使它運行。
WSGI是固有的同步API。 我不了解Pulsar,但是如果它能以某種方式神奇地解決這一問題,我將感到驚訝。
Crossbar.io與經典Web(和同步)堆棧集成的方式是通過REST橋。 當前,WAMP的“發布者”角色已在今天(2015/02)發布:也就是說,您可以通過執行簡單的HTTP / POST http://crossbar.io/docs/HTTP-Pusher-Service/發布WAMP事件。 。 Crossbar.io中的此REST橋將在不久的將來擴展為涵蓋所有4個WAMP角色。
如果您退后一步,並且主要關心某些事情,請在您的應用程序中創建一個REST API,並將其直接與WAMP和異步內容集成在一起,我來看看Twisted Klein 。 Twisted Klein本質上是根據Flask建模的,但是在源代碼級別上。 我們有一篇博客文章涵蓋了這一點: 將Web和WAMP代碼與Twisted Klein混合使用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.