接続タイムアウト
クライアントは要求時のポーリングインターバルを設定することができますが、設定した間隔と異なる場合があります。 例えばクライアントはサーバー"clientAction"要求に応答してその状態が数倍速く変化する場合においては、頻繁に要求を送ることが許容されます。 しかしながら、クライアントが設定値に比べて極端に遅くポーリングすることは通常ありえません。
そのため、ポーリング間の長時間の遅れはプリンターの電源 OFF またはネットワーク接続エラーの警告として考えられます。 このとき、サーバーは該当するエラーをレポートし、適切な処置を実行します("オフライン/切断"の表示や技術者へのメール送信など、サーバーの実装に依ります)。
正確なタイムアウトを計測することは容易ではありません。特にジョブの印刷中の場合、数秒~数分かかることがあります。 そのため、特定のジョブキューに対してサーバーが 2 つのタイムアウトを計測することを推奨します。
- ポーリングタイムアウト ... 目安値 : 2 × <ポーリング間隔> + 5 秒
この時間は、サーバーがデバイスオフラインまたはネットワーク切断と見なす前の、ポーリングリクエスト待ちの最大時間として指定します。 またネットワーク環境によってはポーリング間隔の設定値どおりに動作しない場合もあります。 そのため、サーバー側がその使用環境を考慮し、このタイムアウトを適正に調整することを推奨します。 - 印刷タイムアウト ... 目安値: 約 60 秒
この時間は、サーバーがデバイスオフラインと見なす前の、クライアントのプリンターが GET レスポンス取得後に印刷ジョブを印刷し、完了したことを示す DELETE 要求や印刷エラーステータスコード付き POST 要求を発行するまでの最大待ち時間となります。 文書を印刷する現実的な時間はプリンターのパフォーマンスやジョブの長さ、データの種類に応じて変わる可能性があります。 そのため、サーバー側がその使用環境を考慮し、このタイムアウトを適正に調整することを推奨します。
ジョブの印刷中にステータスポーリング要求を送り続けるクライアントの場合、上記印刷タイムアウトは本質的でなく、印刷実行中のステータスポーリング要求にてタイムアウト判断を行うこともできます。
Note
サーバーもしくはルーターの設定により、サーバーのFINパケット発行後に強制的にコネクションが解放されることがあります。その後プリンターのリクエストを発行するときに一時的に通信ができない状態になり、リクエスト発行が遅延する可能性があります。
その場合、サーバーもしくはルーターのtcp_fin_timeout設定を70秒以上に変更することで解消することがあります。一部のメーカーでは、ルーターのtcp_fin_timeout設定のデフォルト値が5秒になっているものがあるためご留意ください。