簡體   English   中英

如何保持與 Heroku 的 WebSocket 連接?

[英]How to keep a WebSocket connection to Heroku alive?

我在 Heroku 上托管了一個 Python Tornado 應用程序。 它提供 WebSocket 連接,我希望它們能夠長時間(兩個小時)保持活動狀態。 但是,由於 Heroku 的限制,它會收到最后一個字節后 55 秒后終止連接
可能的解決方案可能是:

  • 每 50 秒發送一次保活數據包
    我想遠離這個選項並使用它以防萬一絕對沒有其他選擇
  • 在 WebSocket 請求中包含Connection: Keep-Alive標頭
    由於客戶端也是用 Python 編寫的,因此有一種方法可以在每個請求中包含這樣的標頭。 Heroku 文檔提到這樣的標題會阻止 dyno 斷開連接。 但情況似乎並非如此 - 我已經發送了這樣的請求,但連接在超時后仍然關閉。

這里有一些代碼供參考。
這是建立連接的客戶端部分:

req = HTTPRequest('server_url',
                  headers={'Connection': 'Keep-Alive'})
self.conn = await websocket_connect(req, io_loop = self.ioloop)

這是 Heroku 日志消息:

at=error code=H15 desc="Idle connection" method=GET path="/" 
host='app_url' request_id=some_id fwd="ip_address" 
dyno=web.1 connect=0ms service=55003ms status=503 bytes=

我怎樣才能保持連接活躍?

正如他們關於 Websockets 的文檔所述,保持活動數據包實際上是 Heroku 上 Websockets 的唯一解決方案。

暫無
暫無

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

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