いくつかの記事を読んでみましたが、まだ概念がよくわかりません。
誰かこれらのテクノロジーが何であるかを私に説明してみませんか:
- ロングポーリング
- サーバー送信イベント
- ウェブソケット
- 彗星
私が毎回遭遇したことの 1 つは、サーバーが接続を開いたままにして、データをクライアントにプッシュするということでした。接続はどのように開いたままにされ、クライアントはプッシュされたデータをどのように取得するのでしょうか? (クライアントはデータをどのように使用するのでしょうか。コードが役立つかもしれません)
さて、リアルタイム アプリにはどれを使用すればよいでしょうか。Websocket (socket.io [node.js ライブラリ] を使用) についてはよく耳にしますが、なぜ PHP ではないのでしょうか。
ベストアンサー1
以下の例では、クライアントはブラウザであり、サーバーは Web サイトをホストする Web サーバーです。
これらのテクノロジーを理解する前に、まず従来のHTTP Web トラフィックを理解する必要があります。
通常のHTTP:
- クライアントはサーバーに Web ページを要求します。
- サーバーは応答を計算する
- サーバーはクライアントに応答を送信します。
Ajax ポーリング:
- クライアントは通常の HTTP (上記の HTTP を参照) を使用してサーバーに Web ページを要求します。
- クライアントは要求された Web ページを受信し、一定の間隔 (例: 0.5 秒) でサーバーからファイルを要求するページ上の JavaScript を実行します。
- サーバーは、通常の HTTP トラフィックと同様に、各応答を計算して返します。
Ajax ロングポーリング:
- クライアントは通常の HTTP (上記の HTTP を参照) を使用してサーバーに Web ページを要求します。
- クライアントは要求された Web ページを受信し、サーバーからファイルを要求するページ上の JavaScript を実行します。
- サーバーは要求された情報にすぐに応答せず、新しい情報が利用可能になるまで待機します。
- 新しい情報が利用可能になると、サーバーは新しい情報で応答します。
- クライアントは新しい情報を受信し、すぐに別の要求をサーバーに送信して、プロセスを再開します。
HTML5 サーバー送信イベント (SSE) / イベントソース:
- クライアントは通常の HTTP (上記の HTTP を参照) を使用してサーバーに Web ページを要求します。
- クライアントは要求された Web ページを受信し、そのページ上で JavaScript を実行してサーバーへの接続を開きます。
新しい情報が利用可能になると、サーバーはクライアントにイベントを送信します。
- サーバーからクライアントへのリアルタイムトラフィック、これが主に必要となるものです
- イベントループを備えたサーバーを使用することをお勧めします
- 他のドメインのサーバーとの接続は、正しいCORS設定で
- さらに詳しく読みたい場合は、次の記事が非常に役立ちます:(記事)、(記事)、(記事)、(チュートリアル)。
HTML5 ウェブソケット:
- クライアントは通常の http (上記の HTTP を参照) を使用してサーバーに Web ページを要求します。
- クライアントは要求された Web ページを受信し、そのページ上で JavaScript を実行してサーバーとの接続を開きます。
サーバーとクライアントは、新しいデータ(どちらか一方)が利用可能になったときに、互いにメッセージを送信できるようになりました。
彗星:
Cometは、ストリーミングとロングポーリングを使用してリアルタイムアプリケーションを実現するHTML5以前の技術の集合体です。詳しくはウィキペディアまたはこれ記事。
さて、リアルタイム アプリ (コーディングが必要) にはどれを使用すればよいでしょうか。Websocket (socket.io [node.js ライブラリ] を使用) についてはよく耳にしますが、なぜ PHP ではないのでしょうか。
PHPをWebSocketで使うことができます。ラチェット。