我目前正在学习在客户端使用PHP和JavaScript实现Websockets。我在浏览器控制台收到连接失败错误:
WebSocket连接到“wss://127.0.0.1:8080/”失败
我是新的websockets和无法找出连接失败的原因。网上的资料没有发现有帮助,所以我决定在这里发布一个问题。您的建议,提示,故障排除将不胜感激。
JavaScript:client.html
<script type="text/javascript">
var conn = new WebSocket('ws://127.0.0.1:8080');
conn.onopen = function(e){
console.log("Connection established");
};
</script>
PHP:进程控制扩展-Manual
<?php
$host = "127.0.0.1";
$port = 8080;
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die('Not created');
$result = socket_bind($socket, $host, $port) or die('Not bind');
$result = socket_listen($socket,3) or die('Not listen');
do
{
$accept = socket_accept($socket) or die('Not accept');
$msg = socket_read($accept, 1024);
$msg = trim($msg);
echo $msg;
echo "Enter reply";
$reply = fgets(STDIN);
socket_write($accept, $reply, strlen($reply));
}while(true);
?>
1条答案
按热度按时间ioekq8ef1#
首先:Your client.html says:
(non安全连接),但您的错误消息说:
WebSocket连接到“wss://127.0.0.1:8080/”失败
(安全连接尝试)。确保通过不安全的连接执行client.html,否则任何尝试建立不安全的WebSocket连接的尝试都将失败。
如果在握手完成之前与PHP服务器的连接丢失或收到握手响应以外的其他内容,您也会收到“WebSocket connection to 'ws://127.0.0.1:8080/' failed”错误消息。只有在握手完成后,“conn.onopen”才会触发。
试试下面的server.php(基于您的代码)
我已经在终端中启动了server.php,并在Chrome中导航到client.html。服务器输出显示:
Chrome中的控制台显示:
Connection established