0

私が達成したいことは

サーバー側 (JSON または ASP.NET ページを使用した WCF サービス (ま​​だ何が必要かわかりません))

  1. 既存のページからの HTTP リクエストを介して定期的に最新のデータを確認します。(これは動的なページであり、私がそこにいることを認識していないため、更新を送信できません。)
  2. そのページで何か変更があった場合は、新しいデータがあることを示す POST リクエストを Google クラウド メッセージング システムに送信します
  3. すでに登録されているクライアントは、通知を受け取り、4 KB より小さいペイロード データを取得します。

質問は #1 です。サーバー側で新しいデータを定期的にチェックするにはどうすればよいですか? それがデスクトップ アプリの場合は、タイマーを使用します。

私はこの時点で立ち往生しています。どうあるべきか教えてください

ありがとう

4

1 に答える 1

1

「既存のページから HTTP リクエストを介して最新のデータを確認する」とはどういう意味ですか? それはあなたのページですか、それとも他の誰かのページですか? また、コードを WCF サービスまたは ASP.NET ページ内に配置する必要があるのはなぜだと思いますか? これまでの話からすると、これは通常の実行可能ファイルのように思えます。それが何をするかを要約しましょう:

  • HTTP経由でページをプルし、前回から変更されたかどうかを確認します
  • そうであれば、登録クライアントのリストを取得し、GCM をクライアントに送信します

どちらのタスクにも、Web ページの提供は含まれません。このコードが何らかの方法で Web サイトと対話する必要がある場合、それは問題ありません。ただし、上記の Web サイトの一部である必要はありません。できますが、そうする必要はありません。

とはいえ、スケジュールされたタスクを純粋に Web サーバー環境内で実行するのは難しく、ほぼ不可能です。そこには複数のスケジューリング機能があります (Windows タスク スケジューラが最初に頭に浮かびます)。このコードを Web サーバー内で絶対に実行する必要がある場合は、ローカル Web サーバーへの HTTP 要求を発生させる実行可能なスタンドアロン (XMLHTTPRequest を使用する JavaScript や cURL 呼び出しなど) を記述し、そのスクリプトの呼び出しをスケジュールすることができます。タスク スケジューラで。

編集: スケジューリング自体は Web ベースではできませんし、そうすべきではありません。スケジューリング エンジンは、Web サービスの外部にあります。ほとんどのホスティング プロバイダーは、Windows タスク スケジューラに加えて、このようなサービスを提供します。サーバーの管理インターフェイス (CPanel、RDP など) を確認してください。

とにかく、スケジューラから Web ページを呼び出すには、次のコマンドをスケジュールします。

cscript.exe c:\SomePath\CallWeb.js

CallWeb.js は次のようになります。

var xh = new ActiveXObject("Msxml2.XMLHTTP");
xh.open("GET", "http://localhost/mypage.aspx", false);
xh.send();

mypage.aspx は、SonDepremler.aspx をプルし、解析し、変更を検出し、GCM を送信するページです。

これがあなたの質問 #1 に対する答えです。ホストされた Web サーバー環境でスケジュールされた処理を行うにはどうすればよいでしょうか。ソリューションの他の部分で行き詰まっている場合は、別の質問をしてください。

于 2012-10-24T15:14:19.743 に答える