【发布时间】:2019-10-19 14:12:38
【问题描述】:
我正在尝试在 java 脚本客户端和 php 服务器之间建立 web-socket 连接。但是,每当我尝试连接时,都会收到错误“连接被拒绝”。
我已经能够在两个 php 脚本之间创建 web-socket 连接,这让我认为服务器端代码是正确的。
请解释我如何解决这个问题。
服务器(PHP):
$host = "108.167.140.91";
$port = 5353;
set_time_limit(30);
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
// start listening for connections
$result = socket_listen($socket, 20);
// accept incoming connections
// spawn another socket to handle communication
$spawn = socket_accept($socket) or die("Could not accept incoming connection\n");
socket_write($spawn, "connected", strlen ("connected"));
// close sockets
socket_close($spawn);
socket_close($socket);
客户端(HTML):
<html>
<script>
var socket = new WebSocket("ws://108.167.140.91:5353");
// Open the socket
socket.onopen = function(event) {
console.log("connected");
// To close the socket....
socket.close()
};
</script>
</html>
您可以在这里自行测试:
服务器:http://chrislanggames.site/SocketTest/server3.php
【问题讨论】:
-
您的 PHP 服务器是否允许从服务器外部通过端口 5353 进行连接。
-
我不确定。我尝试了多个不同的端口。如何检查是否允许连接?
-
用telnet试试看能不能连上
telnet 108.167.140.91 5353 -
Telnet 无法打开连接。这可能与我服务器上的防火墙有关吗?如果是这样,我怎样才能将端口列入白名单?
标签: javascript php websocket