gpt4 book ai didi

php - WebSocket 错误:net::ERR_SSL_PROTOCOL_ERROR

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:23 25 4
gpt4 key购买 nike

我刚刚在本地服务器(Xampp 环境,Windows)上使用 Let's Encrypt SSL 证书(非自签名)创建了一个 PHP Web 服务器,所以我的网站 https://example.it看起来像每个浏览器的有效证书。我可以使用带有标准端口的 http://和 https://导航到它。

现在我正在实现用于创建网络聊天的 php 套接字,但是如果我通过 HTTP 使用不安全的网络套接字协议(protocol):

ws://example.it:8090/chat/php-socket.php

有效。

如果我通过 HTTPS 使用安全网络套接字协议(protocol):

wss://example.it:8090/chat/php-socket.php

我在建立连接 net::ERR_SSL_PROTOCOL_ERROR 时收到错误

如果有人需要,这是我的代码:

$(document).ready(function(){
var websocket = new WebSocket("wss://example.it:8090/chat/php-socket.php");
websocket.onopen = function(event) {
showMessage("<div class='chat-connection-ack'>Connssione stabilita.</div>");
}
websocket.onmessage = function(event) {
var Data = JSON.parse(event.data);
console.log(Data);
showMessage("<div class='"+Data.message_type+"'>"+Data.message+"</div>");
$('#chat-message').val('');
};
});

最佳答案

您正在尝试对 ws://wss:// 使用相同的端口 (8090) - 这很可能不起作用。虽然您没有显示任何服务器端配置,但我怀疑端口 8090 上的 websocket 服务器只能执行普通的 WebSocket(即 ws:// 而不是 wss:// ) 并且您希望来自 HTTP 服务器(端口 443)的 TLS 也神奇地应用于端口 8090 上的 wss://。不是这种情况。通过使用端口 8090 尝试 wss://,您实际上是在尝试与不使用 TLS 的服务器进行 TLS 握手,这会导致 net::ERR_SSL_PROTOCOL_ERROR

常见的设置是使用像 nginx 或 Apache 这样的网络服务器作为 websocket 服务器的反向代理,并在网络服务器上终止 TLS。这样 ws://wss:// 都可以从外部在标准端口(即 80 和 443)上工作,并且端口 8090 上的互联网普通 websocket 服务器将使外部无法访问。参见示例 NGINX to reverse proxy websockets AND enable SSL (wss://)?WebSocket through SSL with Apache reverse proxy了解如何设置这样的东西。

关于php - WebSocket 错误:net::ERR_SSL_PROTOCOL_ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59542929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com