如何使用websocket将javascript页面连接到php页面?

如何使用websocket将javascript页面连接到php页面?,javascript,php,websocket,Javascript,Php,Websocket,我正在尝试用JavaScript页面和php页面(LOCALHOST/socket/socket\u server2.php)建立websocket连接 我启动套接字(LOCALHOST/socket/socket\u server2.php),然后打开JavaScript页面,但生成以下错误: 到“ws://localhost/socket/socket\u server2.php”的WebSocket连接 失败: 我做错了什么 我正在使用xampp在本地机器上尝试此功能 <scrip

我正在尝试用JavaScript页面和php页面(LOCALHOST/socket/socket\u server2.php)建立websocket连接

我启动套接字(
LOCALHOST/socket/socket\u server2.php
),然后打开JavaScript页面,但生成以下错误:

到“ws://localhost/socket/socket\u server2.php”的WebSocket连接 失败:

我做错了什么

我正在使用xampp在本地机器上尝试此功能

 <script>
    websocket = new WebSocket('ws://LOCALHOST/socket/socket_server2.php');
   
        websocket.onopen = function(event) { 
            showMessage("<div  >Connection is established!</div>");
            console.log(event)          
        }
        websocket.onmessage = function(event) {
             $("#server").val(event.data);
            //showMessage("<div  >Messaggio dal server:"+event.data+"</div>");
            console.log(event)
             
        };
        
        websocket.onerror = function(event){
            showMessage("<div >Problem due to some Error:"+event+"</div>");
            console.log(event)
        };
        websocket.onclose = function(event){
            showMessage("<div >Connection Closed</div>");
            console.log(event)
            
            // Connection closed.
           // Firstly, check the reason.
            
           if (event.code != 1000) {
              // Error code 1000 means that the connection was closed normally.
              // Try to reconnect.
                
              if (!navigator.onLine) {
                 alert("You are offline. Please connect to the Internet and try again.");
              }
           }
            
            
        }; 
</script>

websocket=newwebsocket('ws://LOCALHOST/socket/socket_server2.php');
websocket.onopen=函数(事件){
showMessage(“连接已建立!”);
console.log(事件)
}
websocket.onmessage=函数(事件){
$(“#server”).val(event.data);
//showMessage(“消息服务器:“+event.data+”);
console.log(事件)
};
websocket.onerror=函数(事件){
showMessage(“由于某些错误导致的问题:+event+”);
console.log(事件)
};
websocket.onclose=函数(事件){
showMessage(“连接已关闭”);
console.log(事件)
//连接已关闭。
//首先,检查原因。
如果(event.code!=1000){
//错误代码1000表示连接正常关闭。
//尝试重新连接。
如果(!navigator.onLine){
警报(“您处于脱机状态。请连接到Internet并重试。”);
}
}
}; 
PHP:


您的PHP似乎创建了一个基本的TCP套接字,而不是websocket。它们不是一回事。可能对你有帮助。所以这两段代码不能一起工作?没错,是的。您需要使用(或实现)一些运行WebSocket服务器而不是普通TCP服务器的PHP代码。有关websockets和TCP套接字之间的差异的更多信息,请参阅。我只是尝试使用这家伙的代码,它可以工作。可能我上面发布的代码中有一些错误并阻止了连接。无论如何,谢谢你,我会阅读你提供的链接。
可能我上面发布的代码有一些错误
…没有。上面代码的问题在于它没有创建websocket。我已经解释过了。这不是一个错误,只是它做了一个不同的任务。
    <?php
    error_reporting(E_ALL);
    /* Allow the script to hang around waiting for connections. */
    set_time_limit(0);
    /* Turn on implicit output flushing so we see what we're getting
     * as it comes in. */
    ob_implicit_flush();
    $port = 8000;
    $address = 'localhost';
    if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
        echo "socket_create() failed: reason1: " . socket_strerror(socket_last_error()) . "\n";
    }
    if (socket_bind($sock, $address,$port) === false) {
        echo "socket_bind() failed: reason2: " . socket_strerror(socket_last_error($sock)) . "\n";
    }
    
    if (socket_listen($sock, 5) === false) {
        echo "socket_listen() failed: reason3: " . socket_strerror(socket_last_error($sock)) . "\n";
    }
    
    socket_set_nonblock($sock); 
    
    do {
        
       
        if (($msgsock = socket_accept($sock)) === false) {
            echo "socket_accept() failed: reason4: " . socket_strerror(socket_last_error($sock)) . "\n";
            break;
        }
     
     
        
        /* Send instructions. */
         
        $msg = "\nWelcome to the PHP Test Server. \n" .
            "To quit, type 'quit'. To shut down the server type 'shutdown'.\n";
        socket_write($msgsock, $msg, strlen($msg));
    
       
       
       
        do {
           
          
           
            if (false === ($buf = socket_read($msgsock, 2048, PHP_NORMAL_READ))) {
                echo "socket_read() failed: reason5: " . socket_strerror(socket_last_error($msgsock)) . "\n";
                break 2;
            }
    
            if (!$buf = trim($buf)) {
                continue;
            }
            if ($buf == 'quit') {
                break;
            }
            if ($buf == 'shutdown') {
                socket_close($msgsock);
                break 2;
            }
            $talkback = "PHP: You said '$buf'.\n";
            socket_write($msgsock, $talkback, strlen($talkback));
            echo "$buf\n";
    
             
    
        } while (true);
        socket_close($msgsock);
    } while (true);
    
    socket_close($sock);
    
    
    
     
    ?>