問題タブ [reconnect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3686 参照

node.js - socket.io の再接続は接続を再実行しますか?

私は、socket.io を使用して node.js サーバーを介して何らかの通信を行う単純な Web アプリケーションを作成しました。

ユーザーが接続すると、ノードはクライアントに特定のイベントをサブスクライブするように指示する情報を返します。それはうまくいきます。

しかし、ブラウザーをアイドル状態にすると、クライアントはイベントを 2 回サブスクライブすることになります。サブスクリプション プロセスは次のように機能します。

ユーザーが node.js に接続すると、「adduser」メッセージが表示されます

その関数で発生する 2 つの重要な事柄は次のとおりです。

socket.emit('nodeinfo') は、イベントをサブスクライブするようにクライアントに通知します。

したがって、クライアントは

問題は、「接続されています」と 2 回言うことはなく、「adduser」の console.log() 関数がノード側で再度呼び出されることはありません。発生しているように見える唯一のことは、node.js が nodeinfo を再度発行する (またはクライアントがそう考える) ことで、クライアントが再サブスクライブします。

socket.io での再接続がどのように機能し、これがどのように発生するかを誰かに説明してもらえますか?

0 投票する
3 に答える
16070 参照

node.js - ノード JS Redis クライアント接続の再試行

現在、ノード redis クライアントとしてhttps://github.com/mranney/node_redisを使用しています。

client.retry_delayデフォルトは 250ms に設定されています。

redis に接続しようとしましたが、接続が成功したら、redis サーバーを手動で停止して、動作するかどうかを確認client.retry_delayしました。しかし、私はそれが働いているのを見ませんでした。

次のログ メッセージは、 を使用して作成された redisClients のイベントとログに記録さreadyendますcreateClient

サーバーが稼働状態に戻ったときに、成功メッセージ [ready イベントが発生しませんでした] が再び表示されませんでした。

何か不足していますか?リトライ定数はいつ使用されますか? ノードから障害が発生した後に redis サーバーが起動したかどうかを確認するための回避策はありますか?

0 投票する
2 に答える
4616 参照

java - Smack Client - 接続が中止されても、ユーザーはまだ「オンライン」です

小さな XMPP クライアント/ボットを構築するために smack を使用すると、非常に奇妙な動作が発生します。接続と、ConnectionListener および ChatManagerListener をセットアップしました。これは非常にうまく機能し、ポータブル デバイスで実行されているアプリケーションとチャットできます。

接続が失われたときの動作をテストするために、ポータブル デバイスのイーサネット ケーブルを抜きました。XMPP クライアントが接続を失い、ユーザーがユーザー仲間の名簿で「オフライン」に設定されることを期待していました。何が起こるかというと、このユーザーはまだ「オンライン」として表示されており、クライアントの ConnectionListener は、connectionClosed や reconnectionFailed などに関係なく、何も起動しません。

その後、イーサネット ケーブルを再び差し込むと、接続が常に有効になっているように見えることがあります。オフライン メッセージが処理され、以前のようにチャットできるようになりました。また、クライアントが完全にアクセスできず、故障していて、すべてのリスナーがなくなったように見えることもあります... しかし、例外はスローされません。

接続が中止された後にクライアントが再び起動するかどうかわからないため、これは非常に奇妙で制御不能な動作であり、クライアント全体が使用できなくなります。

他の誰かがそのような問題を経験したことがありますか、または何が起こっているか (何が起こっていないか) のヒントを持っていますか?

必要に応じてコードを提供できますが、実際には Smack のドキュメントからコピー & ペーストするだけです。

0 投票する
2 に答える
15769 参照

event-handling - WebSocket.onclose は、ユーザーのナビゲーションまたは更新によってトリガーされるべきですか?

パート 1: 予想される動作?

onclose呼び出されるハンドラーに関して、Firefox と Chrome の間でブラウザーの動作に一貫性がありません。

oncloseユーザーページのナビゲーション/更新が原因である場合、Chrome はトリガーしないようです。ただし、Firefox はonclose.

ここでは、Firefox が正しく動作しているように思えます。

WebSocket 接続が (おそらくクリーンに) 閉じられると、ユーザー エージェントは CloseEvent インターフェースを使用するイベントを作成する必要があります。イベント名は close で、これはバブルせず、キャンセルできず、デフォルト アクションがなく、wasClean 属性が true に設定されています。 code 属性が WebSocket 接続終了コードに設定され、 reason 属性が WebSocket 接続終了理由に設定されている場合は、接続が正常に終了し、それ以外の場合は false です。タスクをキューに入れ、最初に readyState 属性の値を CLOSED (3) に変更してから、WebSocket オブジェクトでイベントをディスパッチします。

ソース: http://www.w3.org/TR/2011/WD-websockets-20110419/#closeWebSocket

卑劣なコード/予期しない動作につながる可能性がありますが.

予想される動作を確認できる人はいますか?

パート 2: 自動再接続の実装方法

ユーザーのために自動再接続するライブラリがある場合、再接続を試みる必要があるかどうかをどのように判断しますか? CloseEvent.wasClean物件をチェックしていますか?「クリーン」とは、API呼び出しWebSocket.close()またはサーバーがクローズフレームを送信することによってクローズが発生するはずだったことを意味すると想定する必要がありますか? ネットワークエラーが原因で終了した場合、どうなるでしょwasCleanfalseか?

Pusher JavaScript ライブラリでは、開発者が接続を閉じることを選択した場合 (開発者が接続を閉じることを選択した場合) を除き、閉じると再接続がトリガーされると仮定しました (onclose -> 待機中 -> 接続中)。socket.io クライアント ライブラリも同じ想定をしているようです。

これに基づいて、どちらのライブラリもプロパティをチェックしないため、ユーザーのナビゲーション/更新によって発生した Firefox の onclose イベントが不要な再接続をトリガーしCloseEvent.wasCleanます。

例とビデオ

矛盾を示すために使用できる例を次に示します: http://jsbin.com/awonod/7

問題を実演している私のビデオは次のとおりです : http://www.screenr.com/vHn8

注意すべき点の 1 つは、Escape キーを押すと、WebSocket 接続が閉じられる可能性があることです。ただし、注意深く観察したり自分で試してみると、ページが更新される直前に close イベントがログに記録されていることがわかります。

0 投票する
1 に答える
1778 参照

ios - iOS: XMPP がオールドスクール SSL 接続で再接続

XMPPFrameworkXMPPReconnect「偶発的な切断」という名前の拡張機能を提供し、ストリームを自動的に再接続します。

これは、通常の接続の設定でうまく機能します。

ただし、このオールドスクール SSL 接続は対象外です。

説明付きのエラーlibxmlErrorDomainコードとしてエラーが連続して投げられましたが、4Document is empty

場合によっては、説明付きのGCDAsyncSocketErrorDomainエラー コードとしてエラーがスローされることもあります。4Read operation timed out

XMPPReconnectOld School SSL 接続で機能する方法を教えてください。

PS XMPP サーバーはopenfirePLAIN認証のメカニズムです。

0 投票する
1 に答える
1905 参照

java - 実行時の JMS サーバ再起動後の JMS メッセージ送信

JMS に問題があります。問題は、アプリケーションがあり、 JMS を介してメッセージを送信しようとしていますが、JMS サーバーの再起動後、サーバーがダウンしたときのように例外がスローされることです。再接続していません。

JMS サーバーを再起動しなくてもまったく問題なく、weblogic 10.x を使用しています。

JMS 構成に関する問題ですか?

ありがとう

0 投票する
1 に答える
1318 参照

python - Python クライアントがサーバーに再接続しない

英語が苦手で申し訳ありませんが、ソフトウェアに問題があり、助けが必要です。しかし、まず最初に、いくつかのコードです!

クライアント側:

サーバー側:(インターネットで見つけた)

サーバーを再起動/切断すると、クライアントは再接続しません。.terminate()メソッドとメソッドを使用し.close()てソケットを閉じました。

0 投票する
1 に答える
894 参照

mysql - Ruby mysql gem 'reconnect' オブジェクト変数

スクリプトを実行してから一定時間が経過すると、Ruby で「mysql has gone away」エラーが発生します。

接続が失われたときに自動再接続するように mysql gem に指示したいと思います。

私の現在のコードは次のようになります。

次のガイド [0] では、mysql gem には「reconnect」オブジェクト変数があると書かれていますが、コード内でそれを使用する方法がわかりません。

このオプションを上記のコードに実装するにはどうすればよいですか?

前もって感謝します、ライアン

[0] http://www.tmtm.org/en/mysql/ruby/

編集 - -

わかった。私はそれを理解したと思います。

@@dbh.reconnect = true行の後に追加する必要があり@@dbh = Mysql.real_connect(@@server, @@user, @@pass, @@db)ます。

注: IRC の 'nice' chapy によると、mysql gem は使用するのに最適な Ruby gem ではない可能性があります。

0 投票する
1 に答える
485 参照

ios5 - 2 人以上のプレーヤーで GKMatch に再接続する

私はゲームセンターのゲームをテストしています。具体的には、プレーヤーが一時的に脱落したときに何が起こるか (電話、バックグラウンドなど)、ゲームを一時停止し、プレーヤーが再び生き返ったときに再接続できるようにしたいと考えています。

match:shouldReinvitePlayer 機能によってプレイヤーが再招待されるため、これは 2 プレイヤー ゲームでは正常に機能しますが、これは 2 プレイヤー ゲームでのみ機能するように Apple によって指定されています。

3 人 (またはそれ以上) のプレイヤーのゲームでは、appDelegate applicationWillEnterForeground で次のように処理しています。

何が起こるかというと、既存の 2 人のプレーヤーが喜んで 'ping' を実行し、アプリ デリゲート コードが呼び出されたとき (再び生き返ったプレーヤーで)、一致は nil ではなく、playedIDs 配列には何もありませんが、完了ハンドラーは表示されません。呼び出されると、「生き返った」プレーヤーは再び再接続されません。

また、「ライブ」プレーヤーのデバッグ ログに独特のパターンが表示され、バックグラウンドに移行したプレーヤーのステータスが「接続済み」なしで複数回「切断済み」に変更されたことを示しています。

それで...バックグラウンドにプッシュされてから復活したときにGKMATCHが意味をなすと期待しても大丈夫ですか。どうすれば再接続できますか? 出来ますか?

0 投票する
1 に答える
3872 参照

java - WiFi に接続する理由

すべて - ユーザーが WiFi ネットワークに接続できるようにするアプリがあります。私はこの質問を見て、アプリを切断して再接続できるようにしました(つまり、正しいSSIDとパスワードを持っていました)が、彼はまさに私がやりたいことではありません. まだ接続されていない場合は接続したいだけで、すでに接続されている場合は何もしません。(設定で) WiFi をオフにしてアプリを実行しても、何も起こりませんでした。だから私はこれを試したよりも

これに対して

ただし、この変更は何もしませんでした (WiFi がオンの場合でも)。だから私の質問は、WiFiがまだオンになっていない場合はオンにし、既にオンになっている場合は何もしない方法です(ifステートメントを使用する必要があることがわかっているので、WiFi固有のコードを探しているだけです)?御時間ありがとうございます!