接続タイムアウト

CloudPRNT Version HTTP における接続タイムアウト

クライアントは要求時のポーリングインターバルを設定することができますが、設定した間隔と異なる場合があります。
例えばクライアントはサーバー"clientAction"要求に応答してその状態が数倍速く変化する場合においては、頻繁に要求を送ることが許容されます。
しかしながら、クライアントが設定値に比べて極端に遅くポーリングすることは通常ありえません。
そのため、ポーリング間の長時間の遅れはプリンターの電源 OFF またはネットワーク接続エラーの警告として考えられます。
このとき、サーバーは該当するエラーをレポートし、適切な処置を実行します("オフライン/切断"の表示や技術者へのメール送信など、サーバーの実装に依ります)。
正確なタイムアウトを計測することは容易ではありません。
特にジョブの印刷中の場合、数秒~数分かかることがあります。
そのため、特定のジョブキューに対してサーバーが 2つのタイムアウトを計測することを推奨します。

ポーリングタイムアウト ... 目安値 : 2 x <ポーリング間隔> + 5 秒

この時間は、サーバーがデバイスオフラインまたはネットワーク切断と見なす前の、ポーリングリクエスト待ちの最大時間として指定します。
またネットワーク環境によってはポーリング間隔の設定値どおりに動作しない場合もあります。
そのため、サーバー側がその使用環境を考慮し、このタイムアウトを適正に調整することを推奨します。

印刷タイムアウト ... 目安値: 約 60 秒

この時間は、サーバーがデバイスオフラインと見なす前の、クライアントのプリンターが GET レスポンス取得後に印刷ジョブを印刷し、完了したことを示す DELETE 要求や印刷エラーステータスコード付き POST 要求を発行するまでの最大待ち時間となります。
文書を印刷する現実的な時間はプリンターのパフォーマンスやジョブの長さ、データの種類に応じて変わる可能性があります。
そのため、サーバー側がその使用環境を考慮し、このタイムアウトを適正に調整することを推奨します。
ジョブの印刷中にステータスポーリング要求を送り続けるクライアントの場合、上記印刷タイムアウトは本質的でなく、印刷実行中のステータスポーリング要求にてタイムアウト判断を行うこともできます。

注釈

サーバーもしくはルーターの設定により、サーバーのFINパケット発行後に強制的にコネクションが開放されることがあります。 その後プリンターのリクエストを発行するときに一時的に通信できない状態になり、リクエスト発行が遅延する可能性があります。

その場合、サーバーもしくはルーターのtcp_fin_timeout設定を70秒以上に変更することで解消することがあります。 一部のメーカーでは、ルーターのtcp_fin_timeout設定のデフォルト値が5秒になっているものがあるためご留意ください。

CloudPRNT Version MQTT における接続タイムアウト

Trigger POST の場合

クライアントは、デフォルト設定では、定期的なポーリングを行いません。
クライアントが定期的なポーリングを行うように設定した場合は、タイムアウトの判定は CloudPRNT Version HTTP における接続タイムアウトと同じです。
クライアントがネットワークに接続されている場合、CloudPRNTサーバーの発行する request-post メッセージを受信すると、ポーリングを行います。
CloudPRNTサーバーは、クライアントが request-post メッセージに応答しないことをもって、クライアントがネットワークから切断されたことを判定できます。

Full MQTT / Pass URL の場合

クライアントは、デフォルト設定では、定期的な client-status メッセージの発行を行いません。
クライアントが定期的に client-status メッセージを発行するように設定した場合は、タイムアウトの判定は CloudPRNT Version HTTP における接続タイムアウトと同じです。
クライアントがネットワークに接続されている場合、CloudPRNTサーバーの発行する request-client-status メッセージを受信すると、 client-status メッセージを発行します。
CloudPRNTサーバーは、クライアントが request-client-status メッセージに応答しないことをもって、クライアントがネットワークから切断されたことを判定できます。
またクライアントはMQTTブローカーへの接続時に client-will メッセージをWillメッセージとして登録します。
CloudPRNTサーバーは、このメッセージの受信をもって、クライアントがネットワークから切断されたことを判定できます。