1

私は、画面上の人々と同時に複数の 1 対 1 の会話を行う Web チャットを書いています。(基本的に、グループチャットなしの個人的なメッセンジャーのように).

私のテクノロジーの選択肢は、Long Polling と WebSockets のようで、選択しようとしています。

ロング ポーリングの利点は、実装が非常に簡単で、必要なデータ (ページの更新に必要なデータを含むカスタマイズされた JSON オブジェクト) を返すことができることです。

WebSockets で私が恐れているのは、PHP にネイティブ ライブラリがないことです。そのため、さまざまなサード パーティのライブラリ間で買い物をする必要があり、チャネルやサブスクリプションなど、概念がより複雑に見えます。

ブラウザの互換性は私にとって問題ではありません。

  1. ロング ポーリングのパフォーマンスは、Websocket よりもはるかに劣っていますか? いいえの場合、私の決定は簡単です。

  2. PHP 用の本当に単純な Websocket サーバーはありますか? それとも、コンセプトはとても単純なので、自分で書くことができますか? (Mozilla にはクライアントの作成に関する非常に簡単なチュートリアルがありますが、サーバーではありません)。

4

2 に答える 2

2

ロング ポーリング スキームに、フロントエンドと同じ Web サーバーによってホストされるエンドポイントが含まれると仮定すると、これは、アプリケーションのすべてのユーザーに対して 2 つのアクティブな接続を意味するため、サポートできるユーザー数は基本的に半分になります。Websocket サーバーは別のポートで実行され、Web サーバーをバイパスできるため、Websocket を使用すると、接続のオーバーヘッドが大幅に節約されます。

Websocket がオーバーヘッドを節約するもう 1 つの点は、接続が確立されると、一定の要求と応答が不要になることです。Zombie Websocket 接続は、帯域幅と CPU の両方に関して本質的に無料です。

最後に、ロングポーリングの方が実装が簡単だとは思いません。Websocket はまさにあなたが望むことを行うように設計されているため、既存の Websocket パッケージを利用すると、実際には数行のコードを節約できると思います。PHP を使用する場合は、Ratchet (機能豊富) またはphpwebsocket (lite) を検討します。

于 2013-08-12T05:42:38.910 に答える
0
  1. ロング ポーリングは、間違いなくWebsocket よりもはるかに貧弱です。
  2. 特にチャットアプリケーションの場合、PHP で websockets ライブラリを使用することはお勧めしません。

代わりに、Python、Ruby、または Node.jsを使用することをお勧めします。

于 2013-08-09T15:43:24.543 に答える