16

私はwebsocketを接続するためにjavascriptを使用しています:

<script>
    var socket;  
    var host = "ws://localhost:8000/socket/server/startDaemon.php";  
    var socket = new WebSocket(host);  
</script>

エラーが発生しました:

でサーバーへの接続を確立できません

var host = "ws://localhost:8000/socket/server/startDaemon.php";
var socket = new WebSocket(host);

この問題を解決するにはどうすればよいですか?

注 : Web ソケット アプリケーションをサポートするために、mozilla で Websocket を有効にしました。クロムで実行するとエラーが発生しました:

   can't establish a connection to the server at ws://localhost:8000/socket/server/startDaemon.php. var socket = new WebSocket(host);
4

4 に答える 4

5

どうやら、Firefox 4 では脆弱性のために WebSocket が無効になっているようです。この記事から引用するには:

Firefox 4 で無効になっている WebSocket

最近の発見により、Websocket が動作するプロトコルが攻撃に対して脆弱であることが判明しました。Adam Barth は、攻撃者がブラウザとインターネットの間にあるキャッシュをポイズニングするために使用できる、プロトコルに対するいくつかの深刻な攻撃を示しました。

于 2011-06-02T05:45:50.663 に答える
2

このリンクからコードをたどってエラーを解決しました

http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/ および応答メッセージ用の socketWebSocketTrigger.class.php ファイルを作成しました。コードは次のとおりです。

class socketWebSocketTrigger
{   

        function responseMessage($param)
        {
            $a = 'Unknown parameter';

            if($param == 'age'){
                $a = "Oh dear, I'm 152";
            }

            if($param == 'hello'){
                $a = 'hello, how are you?';
            }

            if($param == 'name'){
                $a = 'my name is Mr. websocket';
            }

            if($param == 'today'){
                $a = date('Y-m-d');
            }

            if($param == 'hi'){
                $a = 'hi there';
            }

            return $a;

        }

}

「WebSocketServer.php」の send 関数に、メッセージを応答する「responseMessage」関数を呼び出すためのコードを追加しました。

 public function send($client, $msg){
        $this->say("> ".$msg);
        $messageRequest = json_decode($msg,true);

            // $action=$messageRequest[0];
            $action = 'responseMessage';
            $param  = $messageRequest[1]['data'];
        if( method_exists('socketWebSocketTrigger',$action) ){
                                $response = socketWebSocketTrigger::$action($param);
                            }
            $msg = json_encode(
                array(                      
                'message',
                    array('data' => $response)
                )
            );

            $msg = $this->wrap($msg);

        socket_write($client, $msg, strlen($msg));
    }

それはうまくいっています。

于 2011-06-08T10:28:35.170 に答える
1

まず第一に、あなたの間違いは JavaScriptrequire_once 'WebSocket.php';で php 関数を使用することであり、次に下のリンクのようにチュートリアルを進めます。

http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

それはうまくいっています。

ありがとう、

于 2011-06-08T09:09:36.610 に答える
1

Firefox でクライアントを実行しようとしていますか? ドキュメントによると:

2 月 10 日現在、websocket をサポートするブラウザーは Google Chrome と Webkit Nightlies のみです。ここから入手して ください http://www.google.com/chrome

Chrome で実行してみて、それが機能するかどうかを確認してください。

于 2011-06-02T05:51:17.120 に答える