問題タブ [disconnect]
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.
delphi - Indy は、ソケットを閉じるときに複数の例外をスローします。クリーンな自動再接続を行うには?
Indy 9 コンポーネントを使用して外部デバイスとの永続的な IdTCPConnection を維持する Delphi 6 アプリケーションがあります。接続を切断してからデバイスに再接続したい場合があります。私が行ったときに、Indy が最大 3 つの個別の例外をスローすることがわかりました。これは、Indy コンポーネントがバックグラウンド スレッド上にあり、スレッドの Execute() ループを中断したくないため、クリーンな再接続戦略の開発をやや面倒にしています。
再接続を試みる前に 3 つの例外を吸収する適切な、またはクリーンな方法は何ですか? 私が確認した 3 つの例外は、出現順に、EIdClosedSocket、EIdConnClosedGracefully、EIdSocketError (LastError = WSAECONNABORTED) です。再接続を試行する前に、ソケットのクローズに関連するすべての例外が伝播するまで待ちたいのですが、それを行うためのコード ループを構築する方法がわかりません。
redis - Redis クライアントのブロードキャストの問題 (Socket.IO のコンテキストで)
それで、Socket.IO のスケーリングに関する記事をいくつか読みました。さまざまな理由から、組み込みの Socket.IO スケーリング メカニズムを使用したくありません (私の観点からは必要以上に多くのものを Redis に発行するため、ほとんどの場合、効率が悪いようです)。
だから私はこの単純なアイデアを思いついた:
各 Socket.IO サーバーは Redis pub/sub/store クライアントを作成し、Redis に接続してチャンネルをサブスクライブします。今、データをブロードキャストしたいときは、Redis に公開するだけで、他のすべての Socket.IO サーバーがそれを取得してユーザーにプッシュします。
ただし、問題があります (これは Socket.IO 組み込みメカニズムの問題でもあると思います)。接続しているすべてのユーザーの数を知りたいとしましょう。これを行うには、少なくとも 2 つの方法があります。
サーバー A
give_me_clients
は Redis に発行します。次に、各 Socket.IO サーバーが接続をカウントし、公開しnumber_of_clients
ます。サーバー A はこのデータを取得して結合し、クライアントに送信します。number_of_clients_for::ID_HERE
ユーザーがサーバーに接続/切断するたびに、Redis で各サーバーが更新されます。次に、サーバー A はデータを取得して結合します。より効率的かもしれません。
ただし、これらのソリューションには問題があります。
サーバー A は他のサーバーを認識していません。したがって、彼はいつ聞くのをやめるべきかわかりません
number_of_clients
。サーバー A に他のサーバーを認識させることで修正できます: サーバーが Redis に接続するたびに、サーバーnew_server
A はデータを取得してメモリに保存します。しかし、Redis - Socket.IO 接続が切断された場合はどうすればよいでしょうか? クライアントの 1 つが切断されたことを Redis がクライアントに通知する方法はありますか?実は上と同じ。Socket.IO サーバーがクラッシュした場合、
number_of_clients
データをクリアする方法は?
したがって、本当の問題は次のとおりです: Redis はクライアントの 1 つとの接続が終了したことをクライアントに通知 (シャネルに公開) できますか??
windows - Windows IOCPを使用して切断(RST / FIN)を検出する方法は?
Windows IOCP APIを使用して、TCP接続がピアによって(RSTパケットなどを送信することによって)切断されたかどうかを確認するにはどうすればよいですか?具体的には、データを送受信できません。重複する操作は実行されていません。非同期通知を受け取りたいだけです。それを行う方法はありますか?
c# - ワイヤレス ネットワークの表示、接続、切断
誰かが私にあなたの助けをくれることを願っています...(サンプルコードをいただければ幸いです)
私がやろうとしているのは、ワイヤレスネットワークが私のコンピューターを検出したリストボックスに表示することです。
(選択したネットワークの接続と切断)
C#2010でやるつもり
ありがとう。
java - JDBCドライバーの切断時の例外を回避するにはどうすればよいですか?
OracleデータベースへのJDBC接続を使用しています。切断しようとすると、エラーが発生することがあります。
これは、ネットワーク接続が切断されたためです。この例外をより適切に処理するにはどうすればよいですか?ありがとう。
php - PHP - クライアントの切断時に exec を強制終了する
C++ アプリケーション用の非常に原始的な Web フロントエンドがあります。クライアント (Web ブラウザー) は、php サイトに入り、フォームにパラメーターを入力します。(送信後)php がexecを呼び出し、アプリケーションがその作業を行うよりも。アプリケーションは数分以上動作する可能性があり、かなり大量の RAM を必要とします。
クライアントからの切断を検出する可能性はありますか (たとえば、Web ブラウザーのタブを閉じるなど)。クライアントを切断した後、計算の結果を見ることができないため、これを行いたいので、アプリケーションを強制終了してサーバー上のRAMを解放できます。
助けや提案をありがとう。
php - 数分後に「MySQLサーバーがなくなりました」
保存されたユーザーの検索情報を表示/電子メールで送信するように設計されたクエリに、ユーザーとウィッシュリストの2つのテーブルがあります。
検索情報には、特に本のタイトルが含まれています。
ウィッシュリストテーブルにレコードを持つすべてのユーザーを配列に入れるように設計された最初のクエリがあります。
次に、foreachループを使用して、2番目のクエリを介して、各本のタイトルを取得し、さまざまなサイトで検索を実行して、その情報を画面または電子メールに保存します。
最初の実行では、最初のユーザーの情報が収集されるまでに約3分かかりますが、この情報が表示された後、恐ろしい「MySQLサーバーがなくなった」ことがわかります。
http://dev.mysql.com/doc/refman/5.0/en/gone-away.htmlによると、これはそれほど迅速に行われるべきではありません。
2番目のクエリのコードは単純です:
そのユーザーの情報がコンパイルされたら、ループを閉じて接続を終了するために次のようにします。
私はウェブ上で見つけた他のいくつかの提案を試しました:
しかし、何も問題を解決していません。
何か案は?
どうもありがとう。
linux - マシンを切断する Linux コマンド
一部のマシンがネットワークから切断された場合に、シナリオをテストする必要がある場合があります。つまり、2 台のマシン間の通信を切断します。Linux は、このような状況をシミュレートする方法を提供します。同じコマンドは何ですか?
私が知っている唯一のコマンドは
それをネットワークに戻すには
これを行うためのより良い方法はありますか?
c# - クライアント側が切断されたときの検出と書き込み
C#で簡単なクライアント/サーバーアプリケーションを作成しています。コードにif(cSocket.Connected)タグがあるので、そのようなものが必要です... cSocketが切断された場合...コードを提供します。タイトルと説明から、私の問題を理解できます。 。
これがコードです。
サーバ;
あなたの助けをありがとう:)
c# - データが送信されない場合、TCP ソケットはしばらくすると自動的に閉じますか?
クライアントがサーバーへの TCP ソケットを開くクライアント サーバーの状況があり、それらの間でデータが送信されずに長い時間が経過することがあります。サーバーがクライアントにデータを送信しようとして成功したように見えますが、クライアントはそれを受信せず、数分後にクライアントが切断されたように見えるという問題が発生しました。
時々何らかのキープアライブ パケットを送信する必要がありますか?
編集:注意してください、これは同じコンピューター上のピアとの関係です。コンピューターは、このコンピューターに使用されるポートの範囲を転送する NAT の背後にあります。サーバーに接続するクライアントは、DNS 経由で接続を開きます。つまり、mydomain.net とポートを使用して接続します。