あなたが説明したようなバックグラウンドタスクを管理する方が簡単だと思うので、このようなものに対する私の好みは Java を使用することです。
バックエンド
私のアプローチは、Java EE を使用して、スケジューラ サービスを実装するシングルトン スタートアップ スレッドを作成することです。シングルトン スタートアップ スレッドを使用する理由は、ジョブをバックグラウンド プロセスとして実行できるようにすることです。これにより、非ブロッキングになり、アプリケーションの残りのリソースを解放できます。また、クラスのメソッドを呼び出すだけでスレッドにアクセスできます。更新のために「n」秒/分ごとにファイルを読み取るようにタスクをスケジュールすると、これらをフロントエンドで利用できるようになります。
基本的な例:
@Singleton
@Startup
public class Scheduler {
private static int count = 0;
private Weather weather;
public Weather getWeather() {
return weather;
}
@PostConstruct
public void onStartup() {
System.out.println("Initialization success.");
}
@Schedule(second="*/10", minute="*", hour="*")
public void execute() {
byte[] encoded = Files.readAllBytes(Paths.get("weather_updates.txt"));
String weatherUpdateStr = encoding.decode(ByteBuffer.wrap(encoded)).toString();
weather = new Weather();
weather.parse(weatherUpdateStr);
// Possible addition of logic for push to web socket
}
}
この基本的な例では、Web アプリケーション コンテナー (JBoss 7 の使用をお勧めします) の起動時に sigleton スレッドを作成します。次に、10 秒ごとに実行されるスケジュールされたタスクを作成します。提供されているコードは、基本的な Java 7 ファイルを文字列に読み取り、文字weather.parse()
列を Weather オブジェクトに変換するロジックを含める必要があります。気象オブジェクトは、Web ソケットを介してプッシュされるか、フロントエンドの AJAX 要求を介してポーリングされる準備が整います。
フロントエンド
ここで提案する 2 つの可能なアプローチがあります。
- HTML5 を使用した Web ソケット
- AJAX 呼び出し
1. Web ソケット
Web ソケットは、ページを更新したり AJAX 呼び出しを使用したりせずに動的コンテンツを提供する方法として、HTML5 に導入されました。HTML5 の websocket の優れた紹介を次に示します。Java を使用して HTML5 WebSocket をセットアップする方法の別の優れた例を次に示します。
2.AJAX 呼び出し
jQuery は、AJAX 用の優れた API を提供します。一部の機能を断続的に実行するTimeoutタスクを jQuery に実装できます。実装したい機能は、AJAX Get requestです。
基本的な例:
$.ajax({
url: "getWeatherUpdate.html",
error: function(){
// will fire when timeout is reached
},
success: function(){
// Update your webpage with weather info
},
timeout: 3000 // sets timeout to 3 seconds
});