如何在不使用JavaScript的情况下使用Apache服务器在PHP中创建简单的Websocket聊天应用程序

时间:2019-07-19 12:01:29

标签: php websocket

现在我正在php平台的websocket中工作。最初,我是从这个websocket开始的,很多人讨论了这个主题,但是正确的源代码指导仅在javascript websocket中可用,而在php中不可用。

我正在浏览许多tutorialspoint和youtube,他们的作品有一些错误。最后,我无需使用javascript即可解决问题并实施websocket。我想和你分享我的作品。

我希望这对在不使用javascript的php中创建websocket有所帮助(面向初学者)。

  

注意:在进行此代码之前,请检查您的socket文件是否启用了php.ini。这有助于在php中创建套接字

我添加我的作品是这篇文章的答案之一。

1 个答案:

答案 0 :(得分:-1)

  

Server.php

<?php

    $host = "127.0.0.1";
    $port = "20205";
    set_time_limit(0);

    $sock = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
    $result = socket_bind($sock, $host, $port) or die("Could not bind to socket\n");

    $result = socket_listen($sock, 3) or die("Could not setup socket listener\n");

    class Chat {
        function readline() {
            return rtrim(fgets(STDIN));
        }
    }

    do {
        $accept = socket_accept($sock) or die("Could not accept incoming connection\n");
        $msg    = socket_read($accept, 1024) or die("Could not read input\n");

        $msg    = trim($msg);
        echo "Client Says:\t".$msg."\n\n";

        $line = new Chat();
        echo "Enter reply:\t";
        $reply=$line->readline();

        socket_write($accept, $reply, strlen($reply)) or die("Could not write output\n");
    }while(true);

    socket_close($accept, $sock);

?>

  

Client.php

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

    <div align="center"></div>

    <form method="post">
        <table>
            <tr>
                <td>
                    <label>Enter Message</label>
                    <input type="text" name="txtMessage">
                    <input type="submit" name="btnSend" value="Send">
                </td>
            </tr>
            <?php
                $host = "127.0.0.1";
                $port = "20205";

                if (isset($_POST['btnSend'])) {
                    $msg = $_REQUEST['txtMessage'];
                    $sock = socket_create(AF_INET, SOCK_STREAM, 0);
                    socket_connect($sock, $host, $port);

                    socket_write($sock, $msg, strlen($msg));

                    $reply = socket_read($sock, 1924);
                    $reply = trim($reply);

                    $reply = "Server says:\t".$reply;
                }
            ?>
            <tr>
                <td>
                    <textarea rows="10" cols="30"><?php echo @$reply; ?></textarea>
                </td>
            </tr>
        </table>
    </form>

</body>
</html>
  

如何运行应用程序

  1. 使用以下行通过命令提示符运行server.php文件
php Server.php
  1. 通过浏览器运行client.php文件

  2. 在浏览器(客户端)中-发送消息

  3. 在命令提示符(服务器)中-显示客户端消息并要求我们答复。

  4. 在命令提示符下(服务器)-您发送答复。

  5. 在浏览器(客户端)中,将显示该消息。