多数のクライアントにメッセージを送信する必要があるアプリケーションがあります。クライアントはユーザーのコンピューター上のアプリケーションであり、それらのアプリケーションは一度に数日実行されることがあります。サーバーに新しい命令があるか、ないかのどちらかです。2つの新しい指示の間に10分、場合によっては1時間、場合によっては1日かかることもあります。メッセージは固定長です。
これを実装するための最良の方法は何ですか?クライアントに10秒ごとにサーバーをポーリングさせる必要がありますか?新しいクライアントが接続するたびにサーバー上に新しいスレッドを作成し、新しい命令があるまで接続を維持してから、それをクライアントに送信して、クライアントに新しい接続を作成させる必要がありますか?
または、メッセージをクライアントにプッシュする必要がありますか?私はそれをどのように行うかを考えていました、そして私はこれを思いつきました:サーバーとクライアントの両方としてのサーバーサーバー。クライアントがハンドシェイクすると、そのアドレスがサーバーに渡されます。次に、サーバーはクライアントとして(そして、明らかに他のクライアントが接続できるようにするサーバーとして)機能し始め、クライアントとの接続を維持します。クライアントはサーバーのように機能し、メッセージを待ちます。
最後のものはかなり複雑に見えます。これを行うための最良の方法は何ですか?サーバーからの新しいメッセージ(「指示」)は、サーバーがそれらを「受け取った」後、少なくとも15秒後にクライアントに到着する必要があります。
ちなみに、サーバーアプリケーションはWindows上で実行されます。クライアントについてはよくわかりませんが、マルチプラットフォームを想定しましょう。サーバーアプリケーションとクライアントアプリケーションはどちらもPythonで記述されています。
御時間ありがとうございます。