web-dev-qa-db-ja.com

ApacheサーバーでWebSocketを使用する

WebSocketにまつわるすべての話題があるため、Google上のApacheサーバーでそれらを使用する方法に関する優れたチュートリアルを見つけるのはかなり困難です。

PHP(symfony2)でプラグインを開発しています。このプラグインは時々チャットインスタンスのように実行されます。WebSocketsは、AJAX。問題は、私たちのグループにはシステム管理者のリソースがあまりないため、次の問題に関する適切な情報を収集するのが難しいことです。

  • 従来のApache専用サーバーでWebSocketインスタンスを実行できますか?はいの場合、有用なリンクはありますか?
  • サーバーを変更する必要がある場合は、sysadminのスキルがあまり高くないため、メンテナンスの手間をかける余裕がないため、どのようなツールをお勧めしますか。

どうもありがとうございました、

ps:アプリのこの部分について、開発ブログに技術的/情報的な投稿を行うため、ブログ/サイトにリンクします。

ありがとうございました!

38
Edouard Reinach

1つの方法は、独立してインストールされたWebソケットサーバーを使用することです。

PHP試すことができます: http://code.google.com/p/phpwebsocket/ または http://github.com/Devristo/phpws /

他にも試すことができるプロジェクトがいくつかあります。

基本的に、プロセスをアップロード、解凍、実行する必要があります。

フロントエンドでは、特定のポートでサーバーに接続するJavaScriptがあります。

ほとんどのwebsocketサーバーには、聞こえるものをエコーバックするデモがあります。そのため、テストコードを作成するのに適した場所です。初歩的なチャットの実装を見つけることもできます。

トリッキーな部分は、Webソケットサーバーを監視し、それがスムーズかつ継続的に実行されることを確認することです。

選択するWebsocketサーバーの実装を決定するため、できるだけ多くのブラウザー/デバイスでテストしてください。注意が必要な古いプロトコルと新しいプロトコルがあります。

14
zaf

@zafが述べているように、スタンドアロンのPHPソリューション-Apache内で実行されるものではありません。 Apache WebSocketモジュール があります。

ただし、根本的な問題は、Apacheが多くの永続的な接続を維持するように構築されていないことです。これは、PHPとともに、要求が行われ、応答が迅速に返送されるという考えに基づいて構築されています。これは、リクエストを開いたままにしている場合、リソースをすぐに使い果たしてしまう可能性があることを意味します。

個人的には2つの選択肢があると思います:

  1. 別のリアルタイムWebテクノロジーソリューションを使用し、キューまたは短時間のリクエスト(Webサービス)を使用して、WebアプリケーションとリアルタイムWebインフラストラクチャの間で通信します。
  2. 永続的な接続の処理とリアルタイムWebインフラストラクチャのリアルタイムWebホストサービスへのスケーリングをオフロードします。私は Pusher で働いており、このカテゴリーに分類されます。

自己ホスト型およびホスト型の両方のオプションについては、私の リアルタイムWeb技術ガイド をご覧ください。

17
leggetter

別のwebsocketサーバーを導入しました:PHP Ratchet (- Github )。

これは、クライアントおよびサーバー側のコードとブラウザーサポートのより良い完全なリストです。

これを確認してください link

7
ShahRokh