私はwebsocket-clientを使ってwebsocketサーバに接続しています。私が接続しているサーバーは、定期的にpingを実行することを期待しているようです。WebSocketサーバにpingする方法で、アイドル状態で私を切断しないでください。
0{"sid":"SomeID","upgrades":[],"pingInterval":25000,"pingTimeout":60000}
これは私にping間隔とpingのタイムアウトを教えているようだ:私は、サーバーに接続するとき
は右、それは私にこのメッセージを送信します。私は接続してから1分25秒後にWebSocketクライアントが一貫して切断されていることに気付きました。そして、あなたがそれらの60s + 25sの数字を合計すると、1分25秒が得られます。だから私はこのサーバを毎回頻繁にpingする必要があるので、私を切断しないようです。
サーバーにpingを実行するにはどうすればよいですか?私はws.ping()を試しましたが、それは存在していないようでした。期待している形式でサーバーにデータを送信する必要がありますか?または、いくつかのpingコマンドが組み込まれていますか?
websocket.enableTrace(True)
ws = websocket.WebSocketApp("wss://socket.serverssite.com/socket.io/?transport=websocket",
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.run_forever()
注:ノード(非Python)でwebsocketクライアントを作成し、1分25秒後に閉じません。だから、このpython websocketクライアントはpingでビルドされているようです...
------------------------ Edit- ------------------------
がping_intervalとPING_TIMEOUTを設定しようとしましたが、それはまだ閉じています:
2017年11月6日12 :49:14.340037 ---------------------お仕事内容
2017-11-06 12:49:14.340309 --------- ------------作業内容
'\ x89 \ x80 \\ xd9 \ xc4 \ xdd'
2017-11-06 12:49:19.341680 --------------------- 49:19.341958 ---------------------ものをやって
送信:「\ x89用の\ X80もの
2017年11月6日12を行います\ XD9 \ X06 \のXeF \ xa8'
2017年11月6日12:49:24.343426 ---------------------行うもの
2017-11-06 12:49:24.343769 ---------------------お仕置き
送信:「\ x89 \ X80 \ XE6 \ X92' \ xb8"
送信: '
はここ(閉じ\ X88 \ x823 \ XFB $ \ XD10の\のX13' クローズメソッドが呼び出されるところでありますあなたのために働く必要がありますping_interval
を指定
def run_forever(self, sockopt=None, sslopt=None,
ping_interval=0, ping_timeout=None,
http_proxy_host=None, http_proxy_port=None,
http_no_proxy=None, http_proxy_auth=None,
skip_utf8_validation=False,
host=None, origin=None)
- 、サーバーは、ソースコードから
ありがとうございます。なんらかの理由で、サーバーはまだ私にそれを閉じています。このライブラリが送信しているpingが、サーバが期待しているものではないかと思います。 '\ x89 \ x80f \ x7fLt'を送信し、 '\ x89 \ x8000 \ xf8 \ x85'を送信すると、 '\ x88 \ x82-l \ xb8 \ x00'を送信します。\ x84 'しかし、1分25秒後にはまだ閉じます。 – LampShade