ホームページ >PHPフレームワーク >Workerman >ワーカーマンがつながりを保つ方法

ワーカーマンがつながりを保つ方法

尚
オリジナル
2019-12-06 14:50:304419ブラウズ

ワーカーマンがつながりを保つ方法

通常の状況では、クライアントが切断されると、サーバーに fin パケットが送信されます。fin パケットを受信すると、サーバーはクライアント接続が切断されたことを認識し、ただちにonClose イベント コールバック。

ただし、クライアントの停電、ネットワークのシャットダウン、ネットワーク ケーブルの取り外し、ルーティング障害などの極端な状況がいくつかあります。これらの極端な状況では、クライアントは fin パケットをサーバーに送信できず、サーバーは接続が切断されたことを認識できません。クライアントとサーバー間で定期的にハートビート データが送信されている場合、接続の切断が比較的適時に検出され、onClose イベント コールバックがトリガーされます。

さらに、ルーティング ノードのファイアウォールは、長期間通信されていないソケット接続を閉じるため、長時間のソケット接続が切断されます。したがって、 では、接続が切断されないように、クライアントとサーバーがハートビート データを定期的に送信する必要があります。

GatewayWorker でハートビート検出を構成するにはどうすればよいですか?

現在、GatewayWorker は 2 種類のハートビート検出をサポートしています。サーバーは、ハートビートが受信されない場合に接続を閉じるまでの秒数を設定できます (推奨)。サーバーがハートビート データを定期的にクライアントに送信することもサポートしています(推奨されません)。

クライアントは定期的にハートビートを送信します (推奨)

クライアントは定期的にハートビートをサーバーに送信します (間隔は 60 秒未満であることが望ましい)。サーバー構成は次のようになります。

$gateway = new Gateway("Websocket://0.0.0.0:8585");
$gateway->pingInterval = 55;
$gateway->pingNotResponseLimit = 1;
$gateway->pingData = '';

上記の構成の意味は、クライアント接続 pingInterval*pingNotResponseLimit=55 秒以内にリクエストがない場合、サーバーは対応するクライアントが接続されたと判断することです。がオフラインになった場合、サーバーは接続を閉じて、onClose コールバックをトリガーします。

ワーカーマンの知識について詳しくは、ワーカーマン チュートリアル 列に注目してください。

以上がワーカーマンがつながりを保つ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。