web-dev-qa-db-ja.com

Webソケットを開いているときに、クライアント側のWeb開発でAJAX=を破棄する必要がありますか?

クライアントとサーバーの間でWebソケットを開いているときにAJAX(HTTP)リクエストを忘れる必要があるのではないかと考えていましたが、これが可能かどうか確認するためにここに尋ねる必要があると判断しました私が考えていない何らかの理由で悪い習慣。

ソケットが開かれると、Socket.io(Webソケットの一例に過ぎません)を使用してクライアントとサーバー間で情報を受け渡す構文が少なくなります(多くの場合、単純なエラー処理を意味します)。


AJAXリクエストで簡単に実行できる機能をWebソケット(Socket.ioなど)で処理できない場合があります)

2
user129679
  • AJAXを削除してWebソケットを優先したい場合、問題が1つあるはずです。クライアントがWebソケットをサポートしていない場合はどうなりますか?

  • 一方、アクティブなWebソケット接続がない場合はAJAXリクエストを保持し、それ以外の場合はWebソケットを使用すると、アーキテクチャーの追跡が困難になる可能性があります。コードの記述が増えるほど、維持するコードが多くなり、バグが発生する可能性が高くなります。

私が考えることができる追加の懸念:

  1. 訪問者が多い場合、Web Socketsサーバーは非常に応答しなくなる可能性があります。 AJAXとWebソケットを離しておくと、通知が遅れる可能性がありますが、Webインターフェースは応答性を感じます。

    Stack Exchangeを例にとると、3:35:17.624に誰かが私の回答を支持していて、これを見る場合、Web Socketsの遅延にはほとんど気付かないでしょうブラウザーで3:35:24.501にのみ投票してください。一方、質問に賛成票を投じ、AJAXリクエストに7秒かかる場合は、インターネット接続に問題がないかどうかを確認します。

  2. Webソケット接続を開くには時間がかかります(私が作業したWebサイトでは2〜4秒、Stack Exchangeでは1.5秒)。すべてをフリーズするAJAXたとえば、ページが読み込まれるたびに2秒間は、UXに関して常に許容できるとは限りません。

最後に、それはコンテキストと実際のAJAX要求に強く依存します。たとえば、チャットサイトのすべてのAJAXクエリがWebソケットに移動されることは容易に想像できます。 (これがそこでチャットするために使用されるテクノロジーの場合)、Webサイトの重要な機能はWebソケットに依存しているためです。一方、AJAXクエリをWebソケットに移動してe-コマースWebサイト(カートがAJAXを介して管理される)は、Webソケットが以前はライブカスタマーサポートにのみ使用されていた状況では、非常に奇妙なものになります。

5

単にアップグレードされたAJAXとしてWebSocketを見るのは簡単だと思うので、自然な疑問は「なぜすべてにWebSocketを使用しないのか?」です。確かにあなたはそれらをすべて(多かれ少なかれ)使用できますが、元の意図について考えるのは良いことかもしれません。 AJAXは、非同期でリソースを取得し、完了したら何かを実行するのが本当に上手でした。次に、AJAXなどの欠点を回避する方法としてCOMETなどが登場しました。次に、その次のステップとしてWebソケットを用意しました。しかし、これはAJAXが非同期でリソースをフェッチするのに最適であるという事実を変更しません-おそらく単純な古い静的ファイル-を閉じてから閉じる。 WebSocketは、低レイテンシを必要とする永続的接続に最適です。

2
J Trana