簡體   English   中英

帶有Web套接字客戶端的WSGI兼容組件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM