- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我最近设置了一个 EC2 实例(在没有负载均衡器的 VPC 中),诚然配置有点奇怪,但这是我们正在运行的 Web 应用程序所需要的。
Web 服务器(在 Haskell 中)在端口 4433 上运行(标准端口为 Apache 实例保留)并且正在接收从另一个系统广播的 UDP 数据包。我有许多端口完全开放(仅在测试期间),如下所示(来自安全组):
Custom TCP Rule 4433 tcp 0.0.0.0/0 ✔
Custom TCP Rule 8080 tcp 0.0.0.0/0 ✔
SSH 22 tcp 0.0.0.0/0 ✔
HTTP 80 tcp 0.0.0.0/0 ✔
HTTPS 443 tcp 0.0.0.0/0 ✔
Custom UDP Rule 30090 udp 0.0.0.0/0 ✔
Custom UDP Rule 30089 udp 0.0.0.0/0 ✔
TCP 套接字的 JavaScript 请求在同一个端口上设置套接字(使用分配给 AWS 公共(public) IP 的 URL),这就是请求返回错误的地方:
WebSocket connection to 'wss://[URL]:4433/projects/socket' failed: WebSocket opening handshake was canceled.
将套接字绑定(bind)到 0.0.0.0 会导致相同的错误。
为了启动 Haskell Web 服务器,我必须引用 AWS 提供的内部 IP,因为在引用弹性 IP 提供的公共(public) IP 时它不会运行服务。认为这就是问题所在,我将套接字请求更改为此...
wss://[internal ip]:4433/projects/socket
这改变了错误:
WebSocket connection to 'wss://[internal IP]:4433/projects/socket' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
这个错误对我来说很有意义,因为外部世界无法使用内部 IP。
我在 AWS 上阅读的关于 websockets 的所有内容都涉及 ELB(弹性负载均衡器),我不需要其中之一。我已经尝试了所有当前发布的答案中的所有内容(有些问题甚至没有得到答案),但都无济于事。我还与亚马逊建立了一个支持案例(将近 24 小时前),但尚未收到回复。
导航到 http://[URL]:4433/projects/socket
会产生“WebSocket 可用”,其中 URL 是我们希望使用的 URL 以及 AWS 提供的公共(public) DNS。
运行 netstat -plunt
显示以下内容:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 [internal IP]:8080 0.0.0.0:* LISTEN -
tcp 0 0 [internal IP]:4433 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::443 :::* LISTEN -
tcp6 0 0 :::80 :::* LISTEN -
udp 0 0 [internal IP]:30089 0.0.0.0:* -
udp 0 0 0.0.0.0:30090 0.0.0.0:* -
udp 0 0 0.0.0.0:11950 0.0.0.0:* -
udp 0 0 0.0.0.0:68 0.0.0.0:* -
udp6 0 0 :::38450 :::* -
有人在 AWS 上遇到过类似的 websockets 问题吗?如果是,您是如何解决问题的?
最佳答案
Haskell 服务器和 Apache 服务器之间的 SSL 证书不匹配。
必须使用有关实例新证书的信息重建 Haskell 服务器。更复杂的是,正确的 SSL 库 (libssl0.9.8 libssl-dev
) 没有安装在 EC2 实例上,这在重建 Haskell 服务器期间导致我出现问题。知道 EC2 实例是一 block “空白 Canvas ”,这就是我没有安装该实例的原因。
一旦我安装了 libssl
,我就能够重建 Haskell 服务器,让它指向新的证书。一旦证书“匹配”,websocket 问题就消失了。
重申一下,我们的情况很独特。我们有一个 Apache 服务器(端口 80 和 443)和一个 Haskell 服务器(端口 8080 和 4433),它们相互通信,通过 websockets 执行 pub-sub 操作。两个服务器之间的证书不匹配(不管是什么类型,它可能是多个 Apache 实例)导致了 SSL 警告。来自 SSL 的任何警告都将取消任何建立或维护 websocket 的尝试(因此握手已取消消息)。
Another StackOverflow post提供了一些在这个过程中有很大帮助的线索。更具体地说,这个警告 -
The key to the problem is this: If your SSL certificate causes a warning of any sort, wss:// WebSocket connections will immediately fail, and there is no canonical way to detect this.
关于javascript - WebSocket 连接失败 : WebSocket opening handshake was canceled,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732269/
我正在从不同来源获取新闻提要并添加到数据库,但我遇到异常 Error: Cannot enqueue Handshake after already enqueuing a Handshake. at
嘿,大家好,我只是想制作一个简单的表单,将数据发送到 mySQL 数据库。我的问题是提交后我无法再提交另一份。它只允许我提交表单一次,然后在第二次提交后,我收到此错误“错误:在已经排队握手后无法排队握
我正在尝试将 VisualVM 连接到远程 JMX。 IntelliJ 可以轻松连接,但 VisualVM 失败并在日志输出中显示以下内容: Listening for transport dt_so
我每 5 秒查询一个表并向用户显示。我使用的是mysql 8。应用程序是nodejs。 var con = mysql.createConnection({ host: "localhost",
我正在尝试创建两个函数,一个从 SQL 数据库检索对象,另一个将对象保存到同一个 SQL 数据库。我使用 node.js 和 mysql 来执行此操作。我有两个函数,fetchEmployee 和 E
我正在尝试通过运行命令 ./mvnw compile quarkus:dev 来调试基本的 Quarkus 应用程序在 IntelliJ 上(如 Quarkus 文档中所述)并且它似乎运行正常(给我以
我正在开发一个由 IIS 10 托管的 .Net Core (3.1) Web 应用程序。当我尝试在本地主机上使用 SignalR 时,我能够完全正常连接并从后端接收消息,但是在我将其发布到 IIS
我最近从 AWS ELB 切换到 HAProxy。我正在负载均衡器 (HAProxy 1.5dev19) 上终止 SSL。 自切换以来,我不断在 HAProxy 日志中收到一些 SSL 连接错误(占请
我编写了一个系统,可以自动在 Microsoft Azure 上部署 VM,在上面安装 Sql Server,然后针对新安装的服务器执行 .sql 脚本以初始化环境。周五,这一切都按预期进行。今天,我
我尝试使用 Hyperledger 版本 2.0.0 将我的 Golang 后端连接到正在运行的 Hyperledger 网络... 我在运行“docker-compose up”时看到这个 Serv
我在安装我们的内部产品时遇到 SSL 配置问题。安装在jboss-eap-6.1.上,使用java-1.7.0-openjdk-1.7.0.85.x86_64 日志说: 16:28:11,685 DE
我做到了 import requests url = "https://randomuser.me/api/" data = requests.get(url).json() print data 我
我正在运行为 HTTP/2 客户端提供的代码 Jetty https://github.com/eclipse/jetty.project/blob/master/jetty-http2/http2-
我需要在使用命名管道与其他进程通信的小型 Linux 程序中实现握手类型协议(protocol)。我已经在使用命名管道时搜索了握手类型协议(protocol)的一般实现模式,但我无法打开任何东西...
我安装了 Docker 版本“Docker 版本 19.03.8,构建 afacb8b”,当我尝试使用 docker pull 命令时,如“docker pull mcr.microsoft.com/
我正在使用 python asynchat 来实现网络协议(protocol)。在连接时,我需要发送命令,服务器通过 session 进行应答。 我的主要问题是我需要等待直到收到 session 响应
握手完成后,我在握手时调用 getPeerCertificates() (socket.getHandshakeSession()) 我正在使用 setNeedClientAuth(true)在服务器
我在 logstash-forward 和 logstash 之间有问题,我已经正确安装了 SSL 证书,但是我有这个错误: Failed to tls handshake with 111.111.
本文整理了Java中us.ihmc.robotDataLogger.handshake.YoVariableHandshakeParser类的一些代码示例,展示了YoVariableHandshake
我是 R 语言的新手 并且正在使用 RConnection 在 java 中尝试一个简单的程序,但它给出了这个异常 org.rosuda.REngine.Rserve.RserveException:
我是一名优秀的程序员,十分优秀!