簡體   English   中英

Socket.io 與flask-socketio python。 如何設置套接字保持活動/超時

[英]Socket.io with flask-socketio python. How to set socket keepalive/timeout

我正在努力尋找有關 socket.io 超時值的任何文檔。 我在客戶端使用 //cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js 在服務器端使用 Flask-SocketIO。

這是我創建套接字的方式:

namespace = '/coregrapher'

var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);

socket.on('connect', function() {
    socket.emit('my event', {data: 'I\'m connected!'});
});

socket.on('my response', function(msg) {
    $('#result').append(msg.data);
});

問題是,如果服務器甚至一分鍾都沒有向客戶端或 Visaversa 發送任何內容,則客戶端會斷開連接,如果服務器嘗試向客戶端再次發送,則會失敗,因為客戶端已經斷開連接。 如何讓客戶端保持連接?

謝謝!

您還可以使用 Flask-SocketIO 在服務器端設置參數:

socketio = SocketIO(ping_timeout=10, ping_interval=5)

:param ping_timeout: The time in seconds that the client waits for the
                     server to respond before disconnecting. The default is
                     60 seconds.
:param ping_interval: The interval in seconds at which the client pings
                      the server. The default is 25 seconds.

大問題是,如果您的服務器在一段時間內對保持活動的數據包沒有響應,客戶端將斷開連接並嘗試重新連接。 如果它無法重新連接,最終它將停止嘗試。

也就是說,如果您想修改重試邏輯的配置,那么您可以將選項對象作為第二個參數發送到您的.connect()調用。 根據此處的文檔,可以控制以下選項:

選項:

  • reconnection 是否自動重連(true)
  • reconnectionDelay 在嘗試新的重新連接之前等待多長時間 (1000)
  • reconnectionDelayMax 重新連接之間等待的最長時間 (5000)。 每次嘗試都會按 reconnectionDelay 指定的數量增加重新連接。
  • 發出 connect_error 和 connect_timeout 事件之前的超時連接超時(20000)

因此,如果您希望它在更長的時間內繼續嘗試自動重新連接,您可以增加最后三個選項的時間。

暫無
暫無

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

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