簡體   English   中英

WAMP websocket 服務器連接錯誤 Python 與高速公路

[英]WAMP websocket server connection error on Python with Autobahn

我正在嘗試使用 Python 連接到 WAMP websocket 服務器並訂閱接收消息,但我無法實現它。 我已經設法通過以下代碼在 JS 上使用 Autobahn 進行連接:

< script src = "autobahn.js" > < /script> <script >
  var conn = new ab.Session('ws://examplehost.com:8443/ws',
    function() {
      conn.subscribe('channel', function(topic, data) {
        console.log(data);
        alert('New data arrived: "' + topic + '" : ' + data.title);});},
    function() {
      console.warn('WebSocket connection closed');
    }, {'skipSubprotocolCheck': true}); 
  </script>

但是在 Python 上使用相同的庫,下面的代碼會導致 404 錯誤:

from autobahn.asyncio.wamp import ApplicationSession, ApplicationRunner

class Component(ApplicationSession):
    async def onJoin(self, details):
        def on_event(i):
            print("New data arrived: {}".format(i))

        await self.subscribe(on_event, 'channel')

if __name__ == '__main__':
    url = "ws://examplehost.com:8443/ws"
    runner = ApplicationRunner(url)
    runner.run(Component)

這是我得到的錯誤:

failing WebSocket opening handshake ('WebSocket connection upgrade failed (404 - NotFound)')
dropping connection to peer tcp4:123.123.123.123:8443 with abort=True: WebSocket connection upgrade failed (404 - NotFound)

關於如何解決這個問題的任何想法? 經過大量搜索后,可能使用服務器上的路徑/ws會導致一些問題,但我不確定。 我也嘗試過許多其他 Python 模塊,但不是運氣。

這看起來像一個網絡服務器問題。 我的理解是 websocket 是通過升級常規 HTTP 連接創建的。

您需要配置 web 服務器,以及中間的任何代理,以升級配置。

我在 nginx 中遇到過這種情況。 這看起來是一個很好的例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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