现在我正在php平台的websocket中工作。最初,我是从这个websocket开始的,很多人讨论了这个主题,但是正确的源代码指导仅在javascript websocket中可用,而在php中不可用。
我正在浏览许多tutorialspoint和youtube,他们的作品有一些错误。最后,我无需使用javascript即可解决问题并实施websocket。我想和你分享我的作品。
我希望这对在不使用javascript的php中创建websocket有所帮助(面向初学者)。
注意:在进行此代码之前,请检查您的
socket
文件是否启用了php.ini
。这有助于在php中创建套接字
我添加我的作品是这篇文章的答案之一。
答案 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>
如何运行应用程序
server.php
文件php Server.php
通过浏览器运行client.php
文件
在浏览器(客户端)中-发送消息
在命令提示符(服务器)中-显示客户端消息并要求我们答复。
在命令提示符下(服务器)-您发送答复。
在浏览器(客户端)中,将显示该消息。