2009-07-23 7 views
0

私は、ajaxベースのメッセージングシステムの構築に取り組んでいます。クライアントが最新のメッセージやその他の重要な情報を得るためにX秒ごとにサーバーを呼び出すという考え方です。アプリケーションは、このデータがクライアントに配信されることに非常に大きく依存します。私はあらゆる種類の接続でそれをテストしており、すべてが完璧に動作しているようです。デモの試行中に、一部のクライアントがサーバーからの情報を表示する場所に「未定義」テキストを表示していることがわかりました。このようなことは、サーバーの応答が途切れたり、Javaスクリプトが異常終了したようなものだと私に伝えます。遅い接続の後ろのクライアントを扱う

遅い接続の背後にあるという問題が報告されているクライアントの間で共通することがあるようです。そして、約20台のブラウザが12台の異なるマシンにオープンしていて、すべて同じスイッチを使用していました。

ボトムラインは、接続が非常に遅いクライアントでは問題があるようです。これらのリクエストが送信される頻度に合わせてAJAX呼び出しのタイムアウトを設定しました。今のところ、このタイムアウトとタイマーは5秒です。応答ペイロードはわずか150-160バイトです。

これは接続が遅くてタイムアウトが問題であると仮定すると、このような状況を処理するためのベストプラクティスと戦略は何ですか?

ありがとうございました

答えて

1

このシナリオでは、タイムアウト時間が短すぎます。タイムアウトを10-15秒に増やし、最初の要求がまだ返されていない場合は2回目の要求を送信しないでください。コンテンツのサイズは実際には小さいかもしれませんが、それは待ち時間の問題です。

1

大きな接続であっても、常に障害が発生する可能性があります。だから、あなたは間違いなく "失敗"のケースに対処しなければなりません。すなわち、 "undefined"を表示しない。

1分(データはページ上では更新されませんが、ユーザには知らせません)に「黙って失敗する」システムを想像することができます。

これ以上失敗すると、「接続に問題がある、何か問題がある可能性がありますが、アプリケーションはインターネットに接続しなくても正常に動作しません」というメッセージが表示されます。

(ユーザーが無線LAN、またはモバイルベースの接続を使用している場合、このケースは、かなり頻繁に発生することがあります)

0

2番目の要求は、それまでは最初の1が完了し送信されません。その部分はすでに処理されています。私はタイムアウトを増やすことが私が作ることができる1つの変化であると思う。

非常に奇妙なことは、呼び出しが成功し、実行がそのHTML要素のテキストを設定するポイントまで達した場合にのみ、表示が「未定義」と表示されることです。それは私が得ない部分です。私はサーバーから空文字列を返すことを試みましたが、それらはクライアント側と最悪の場合に空の文字列に変換されますが、データがいくつかの条件に一致しない場合、特定の条件の下でアプリケーションの意図された動作である、表示されている値をクリアする必要があります。

0

あなたの開発環境では、遅い接続をシミュレートし、待ち時間の長い接続をシミュレートできるツールを使用すると役に立ちます。これはあなたのdev環境でエラーを再現させ、そのような動作を観察し始めることができます。

私のopensourceツールDonsProxyはこれを助けることができますが、他のツールもあります。