私はノードからこのAutobahnJSコードを使ってサービスからデータを受け取ります。それは素晴らしく、毎秒複数のイベントを取得します。私のインターネットが一時的に切断されると、アウトバーンは紛失した接続を検出せず、コンソールに「WebSocket接続が切断されました」というメッセージを表示しません。無期限に。autobahn(ノード)ドロップされた接続、無限の待機を検出していない、私はタイムアウトを設定することはできますか?
1分後にデータが到着しない場合は、タイムアウトが設定できますか?再接続しますか?または、サーバーにpingを実行するためにsetTimeout関数を使用することはできますか。また、pongが接続を閉じて再オープンしようとしない場合は、
私の指が出血するまで私はグーグルで行ったが、私はこの質問に直接答えは見つけられなかった。どうもありがとうございました!
connection.onopen = function(session) {
session.subscribe(arg, someEvent);
}
connection.onclose = function() {
console.log("Websocket connection dropped");
}
connection.open();
ノードで実行している場合、AutobahnJSは "ws"ライブラリを使用します。このライブラリは、WebSocket ping/pongを公開する(または公開しない)かもしれません。もしそうなら、それをAutobahnJSで使うことができます。しかし、gzostが指摘するように、W3C仕様のブラウザWebSocket APIは単にそれを公開しません。ブラウザは自分自身でWS ping/pongを実行するかもしれません(少なくともIEではそうしていました)。 – oberstet
私は最後のデータを受け取った時をチェックし、あまりにも多くの時間が渡されたときにconnection.close()を呼び出し、onclose()にconnection.open()を再度追加しました。私の人生のために、私はそれを働かせることができませんでした。接続を閉じると、再び開こうとするとエラーになります。私はAutobahn Pythonを試しましたが、ドキュメンテーションとサンプルはどこにでもありますので、setProtocolOptionsをAutoPingに設定する方法を理解できませんでした。私はついにそれをあきらめ、ハッキングしました。setIntervalがタイムアウトexit()を決定した後、それを 'while:do done' bashスクリプトでラップします。 – heapoverflow
私は作業ノードやpythongの例に非常に感謝しています! – heapoverflow