「予期しないコード200」は、RailoのWebソケットサーバーが古い応答を送信したことが原因です。彼らはWebソケットの仕様を変更し、Chromeは新しい仕様を使用しています。
The problem seems to be caused by chrome & co implementing the new spec, "draft-ietf-hybi-thewebsocketprotocol-17". It requires the server to respond with "HTTP/1.1 101 Switching Protocols" rather than 200 OK.
ここでの解決策は、Railo Webソケット拡張機能を自分で更新するか、他の解決策を使用することです。
これは、PHPで記述されたWebソケットチャットサーバーの完全なデモです。
http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/
私はこれを自分で使用して、横になっていたArchLinuxマシンから提供されるリアルタイムのHTMLチャットを実装しました。構成は、ApacheとPHPをセットアップし、index.htmlとserver.phpのIPアドレスをサーバーマシンの外部IPアドレスに変更するだけで構成されていました。
このflynsarmyデモには、PHPWebSocketの最新バージョンが含まれています。これは、完全にPHPで記述され、単一のファイルに含まれているオープンソースのWebソケットサーバーです。デモは、接続、メッセージ受信、切断の3つのコールバックにフックします。
私にとって重要なことは、Webソケットプロトコルはバイナリではなくテキストのみをサポートしているため、独自のチャットアプリ用に拡張する際に、サーバーの制御に役立つ独自のコマンドを実装する必要があったことです。私の場合のコマンドは次のようになりました。
!kickusers: username, another_username, a_third_username
私のサーバーコードは、すべてのメッセージの最初の文字に「!」がないかチェックします。存在する場合は、コマンドとして扱います。次に、文字列をスライスして、コマンド「kickusers」とキックするユーザーのリストを取得します。次に、適切なキック関数を呼び出して、ユーザー名の配列を渡します。
私のシナリオはチャットクライアントだったので、これはユーザーが文字通りこのコマンドをチャットに入力でき、サーバーがそれを受け入れて応答することを意味しました。
これらすべてが私のサーバーにデプロイされる方法は次のようになります。
- ユーザーがブラウザでサーバー上のその場所に移動すると、Apacheにindex.htmlページを提供させます。ここでApacheが果たす唯一の目的は、index.htmlを要求したクライアントに提供することです。
- index.htmlページには、チャットを表示するためのhtmlと、サーバーとの間でチャットを送受信するためのjavascriptが含まれています。基本的に、index.htmlはHTMLとJavascriptで記述されたチャットクライアントであり、ブラウザで実行されます。
- サーバー上でsshを介してserver.phpを実行し、WEB SOCKETサーバー(Apacheとは完全に別)を起動します。このサーバーは、そこに配置され、接続されている他のクライアントへのテキストのエコーなどのチャットを処理します。
ApacheとPHPのインストールに関するArchwikiは、ApacheとPHPパッケージをインストールする方法でArchに固有ですが、ApacheとPHPの構成に関するセクションはすべてに適用されます。必要に応じて、Googleクエリを保存し、ここにリンクを表示します:https ://wiki.archlinux.org/index.php/LAMP
プロトタイピングに関して、私がFlynsarmyのチャットデモへのリンクを提供した理由は、彼のコメントが役に立ち、彼がそれについてブログを書いたためです。これは、phpのWebソケットで何かを行う方法の非常にシンプルで完全な例です。