JS WebSocket,与服务器建立连接时出现问题
JS WebSocket, Problem with making a connection to the Server
我只是想测试WebSockets,所以我搜索了它们并找到了一些教程。然后,我在 PHP 中编写了一些用于创建 WebSocket 服务器的代码。之后,我创建了一个客户端 HTML 文件,试图通过创建连接将数据发送到 WebSocket 服务器文件。现在,我遇到的问题是我不知道 HTML 客户端文件中的主机名应该是什么(它给了我一个错误)。
我的 WebSocket PHP 服务器文件包含以下内容:
<?php
$host = "192.168.xxx.xx";
$port = 8080;
set_time_limit(0);
$sock = socket_create(AF_INET, SOCK_STREAM, 0) or die("Couldn't create socket.");
$result = socket_bind($sock, $host, $port) or die("Couldn't bind to socket.");
$result = socket_listen($sock, 3) or die("Couldn't set up socket listener.");
do {
$accept = socket_accept($sock) or die("Couldn't accept incoming connection.");
$msg = socket_read($accept, 1024) or die("Couldn't read input.");
$msg = trim($msg);
$reply = "Message from server";
socket_write($accept, $reply, strlen($reply)) or die("Couldn't write output.");
} while (true);
socket_close($accept, $sock);
?>
我的 HTML 客户端文件包含:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebSocket</title>
</head>
<body>
<input type="text" name="msg" id="msg">
<button id="sendbtn">Send</button>
<script>
const socket = new WebSocket('ws://192.168.xxx.xx:8080/');
socket.addEventListener('open', function(event){
console.log("Socket was created.");
});
document.getElementById("sendbtn").addEventListener('click', function(){
socket.send(document.getElementById("msg").value);
});
socket.addEventListener('message', function(event){
alert(event.data);
});
</script>
</body>
</html>
这两个文件放在一个文件夹中(即DocumentRoot)。
感谢任何帮助。
根据用户@ADyson 在评论中所说,简单的 TCP 连接不能用于创建 WebSocket Server。相反,可以使用 Ratchet WebSocket 服务器。
我只是想测试WebSockets,所以我搜索了它们并找到了一些教程。然后,我在 PHP 中编写了一些用于创建 WebSocket 服务器的代码。之后,我创建了一个客户端 HTML 文件,试图通过创建连接将数据发送到 WebSocket 服务器文件。现在,我遇到的问题是我不知道 HTML 客户端文件中的主机名应该是什么(它给了我一个错误)。
我的 WebSocket PHP 服务器文件包含以下内容:
<?php
$host = "192.168.xxx.xx";
$port = 8080;
set_time_limit(0);
$sock = socket_create(AF_INET, SOCK_STREAM, 0) or die("Couldn't create socket.");
$result = socket_bind($sock, $host, $port) or die("Couldn't bind to socket.");
$result = socket_listen($sock, 3) or die("Couldn't set up socket listener.");
do {
$accept = socket_accept($sock) or die("Couldn't accept incoming connection.");
$msg = socket_read($accept, 1024) or die("Couldn't read input.");
$msg = trim($msg);
$reply = "Message from server";
socket_write($accept, $reply, strlen($reply)) or die("Couldn't write output.");
} while (true);
socket_close($accept, $sock);
?>
我的 HTML 客户端文件包含:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WebSocket</title>
</head>
<body>
<input type="text" name="msg" id="msg">
<button id="sendbtn">Send</button>
<script>
const socket = new WebSocket('ws://192.168.xxx.xx:8080/');
socket.addEventListener('open', function(event){
console.log("Socket was created.");
});
document.getElementById("sendbtn").addEventListener('click', function(){
socket.send(document.getElementById("msg").value);
});
socket.addEventListener('message', function(event){
alert(event.data);
});
</script>
</body>
</html>
这两个文件放在一个文件夹中(即DocumentRoot)。
感谢任何帮助。
根据用户@ADyson 在评论中所说,简单的 TCP 连接不能用于创建 WebSocket Server。相反,可以使用 Ratchet WebSocket 服务器。