問題タブ [channel-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ajax - GAE チャネル API を使用して閉じられたチャネルを適切に処理する
Channel API で Google App Engine を使用して Web アプリケーションを作成しています。これは、Ajax のようなことを行う最初の試みであり、私の問題を解決するための標準的な手法があると思いますが、それを見つけることができませんでした。
私のクライアント プログラムはサーバーにメッセージを投稿します。メッセージを送信できない場合 (チャネルが閉じられている場合など)、メッセージはどうなりますか? クライアントがタブレットを使用していて、ユーザーがワイヤレス ネットワークの範囲外に出たらどうしますか? 私のアプリケーションでは、メッセージが再送信されることが重要ですが、これを行う方法がわかりません。
チャネルが閉じられたら、サーバーから新しいトークンを要求する必要があることはわかっていますが、クライアントがそのトークンを取得して、ページをリロードせずに接続を開く方法がわかりません (したがって、データが失われます)。ここに示されているデモでは、クライアントはトークンを知る必要があります。
しかし、クライアントがトークンを知る必要がないことを他の場所で読みました。-- それはどのように機能しますか?
また、onerror および onclose コールバック関数は失敗したメッセージを表示しないようですが、再送信する必要があるものをどのように知ることができますか?
誰かが私を正しい方向に押し進めることができれば、とても感謝しています。
google-app-engine - GoogleチャネルAPIの価格設定はどのように機能しますか?
私は公式ドキュメントで、新しいチャネルを開くには0.01ドルかかると読んだ。そしてそれは2時間続きます。
したがって、私のサイトを2時間毎日使用する1000人の同時ユーザーがいる場合。
総費用は1日あたり1000*$ 0.01 =10$になります。
- 帯域幅コスト+CPUコスト。右 ?
彼らも1時間ごとに充電しますか?
つまり、同時ユーザーが毎日4時間サイトを使用する場合、結果として生じる総コストは1000 * 0.01 * 2 = $ 20になりますか?
java - Google App Engine UserServiceget.CurrentUser()は、/ _ ah / channel /connected/にあるサーブレット処理チャネル接続でnullを返します
ユーザーチャネル接続を処理するために、GoogleChannelAPIとadreess/_ah / channel /connected/に登録されたサーブレットを使用しています。メッセージ後ハンドラで接続が発生すると、UserServiceget.CurrentUser()がnullを返すのに対し、アプリケーションの他のサーブレットではuserを返すことがわかりました。何の場合は教えてください。サーブレットコードは次のようになります。
セキュリティ制約は次のとおりです。
google-app-engine - DARTでAppengineChannelAPIを使用する
DART言語でGoogleAppengineChannel APIを使用することは可能ですか?いくつかの例と落とし穴があればそれを指摘できれば素晴らしいと思います。
java - トークンの有効期限が切れた後の Google App Engine Channel API の再接続
チャネル API (GAE Java SDK + GWT) を使用しており、チャネルの再作成に関する問題の回避策を作成しようとしています (有効期限後およびエラーがスローされた後)。この投稿に可能な解決策が見つかりましたが、どれも機能しませんでした: https://groups.google.com/forum/?fromgroups=#!searchin/google-appengine-java/channel/google-appengine-java/kD3H6BWNYuA/NivXiDrqW7QJ
Channel API iframe を削除して、有効期限が切れる前にチャネルを再作成しようとしました。動作するように見えますが、チャンネルを再作成するとタイマーがリセットされないため、新しいチャンネルを作成して有効期限が過ぎた後に開こうとすると、「onerror」と「onclose」が表示されます(ソケット)。ページを更新すると機能しますが、それは適切なオプションではありません
また、インターネット接続を閉じて再度開くと、エラー コード 0 または 1 が表示されることがあります。ここでも同じです。「onerror」と「onclose」が発生するため、新しいチャネルを再作成して開くことができません。
ソリューションのより具体的な詳細を教えてくれる人はいますか?
更新: onclose/onerror が呼び出された後、タイマーを使用してチャネル (5 秒) を再作成しましたが、現在は機能しています。ただし、最初のトークンが期限切れになると、チャネルの再作成は機能しなくなります:(
java - JavaScriptクライアントからサーバーへのGoogleChannelAPIメッセージ
しばらくして、私はGoogle Channel API
作業の最初の部分を手に入れました。JavaScriptクライアントからサーバーへのメッセージの送信に問題があります。Google Channel API
接続用のサーブレットは次のとおりです。
次のindex.html
ようになります。
アプリケーションをロードするとopened
アラートが表示され、接続が機能していると思います。ここで、誰かがボタンをクリックした場合に、サーバーにメッセージを送信したいと思います。
POSTまたはGETでXMLHttpRequest関数を使用する必要があることを読みました。ただし、新しいURLは渡さず、値を渡すだけです。JSONオブジェクトをサーバーに送信する方法はありますか?
何かのようなもの:
javascript - Google App Engine Channel API Javascriptクライアント:ポーリングタイマーを手動で設定する
Googleの公式GAEChannelAPI Javascriptクライアントを使用して、Google AppEngineJavaサーバーから送信されるメッセージをサポートするWebクライアントを作成しています。チャネルからの新しいメッセージについて、クライアントからサーバーへのポーリングの頻度のタイマーを手動で設定できるかどうかを知りたいです。
FirefoxのFirebugなどのブラウザ検査ツールを使用してクライアントに返されるメッセージをデバッグしようとしているため、クライアントのポーリングの間に遅いタイマーを使用したいと思います。また、クライアントのポーリングによって大量のGETHTTPリクエストが送信されます。これを困難にします。
google-app-engine - Google Channel API はすべてのクライアントにメッセージを送信します
動作する Google チャネル AP を作成しました。すべてのクライアントにメッセージを送信したいと考えています。
私は2つのサーブレットを持っています。1 つ目はチャネルを作成し、クライアントに と を伝えuserid
ますtoken
。2 番目のものはによって呼び出されhttp post
、メッセージを送信する必要があります。
クライアントにメッセージを送信するには、次を使用します。
これにより、メッセージは 1 つのクライアントにのみ送信されます。どうすればこれを全員に送信できますか?
チャネルを作成し、すべての ID のメッセージを送信するために使用するすべての Id を保存する必要がありますか? Id を 2 番目のサーブレットに渡すにはどうすればよいですか?
java - Channel API(Google App Engine、Java)に依存するテストコードを単体化する方法
GoogleAppEngineのChannelAPIに依存するJavaサーブレットがあります。そのコードの単体テストを作成しようとしていますが、テストクライアントとして実際のWebページを使用することに常に依存するのではなく、サーブレットから応答メッセージを受信するスタブクライアントを作成する方法にかなり困惑しています。私のサーブレットは非常に単純です。
通常、これはWebページであるテストクライアントで読みます。しかし、jUnitやTestNGなどのフレームワークを使用してテストできる単体テストを作成したいと思います。Javaサービスの単体テストに関するGoogleのページを読んだ後、テストクラスでLocalServiceTestHelperオブジェクトを使用して、LocalChannelServiceTestConfigオブジェクトで構成するなどの方法を試しました。この結果、私のテストクラスはLocalChannelService
、と同じメソッドを実装しているように見えるクラスのインスタンスを作成できますChannelService
。
でも:
- どちらのクラスも相互に強固な関係はありません(同様のインターフェースを実装しないでください。同じクラス階層にありません...)。LocalChannelServiceオブジェクトをモックオブジェクトとしてサーブレットに挿入できなくなります。
- LocalChannelService APIに関するドキュメントはありません(Googleに感謝します)。
- また、チャネルAPIをテストする方法については、ローカルユニットテストページにドキュメントがありません(繰り返しになりますが、Googleに感謝します)
そこで、Javaコードでテストする方法についてこの投稿に出くわしました。ChannelService
残念ながら、与えられた唯一の関連する答えはPythonに対するものでした。見よ、Googleは確かに、 Pythonローカルユニットテストガイドの概要にあるように、PythonGAEサーバー開発者にGoogleサービスのスタブクライアントを作成するためのツールを提供しています。彼らがJavaに対して同じことを怠ったなんて信じられない!
胸がいっぱいになったので(少し慌てて聞こえたらお詫びします)、本当に知りたいのですが、Google AppEngineのChannelAPIに依存するJavaコードをテストするための最良の方法は何ですか?私は本当にウェブページの代わりにテストツールに頼りたいです。どういうわけか、JavaからGoogleのJavascript Client for Channel APIを呼び出す必要がありますか?モックオブジェクトまたはスタブを使用できるより良い方法があるはずです。
アップデート1
「AppEngine」だけでなく、「GoogleAppEngine」というより適切な名前を使用しました