3

即使我使用了很多 VMware 术语,这也可以被视为 JS 问题。

我正在使用 Websocket 连接到由 vSphere 托管并由 vCloud Director 管理的 VM。

通过 vCloud Director API,我可以获得类似于cst-xlIs3pP+C/oL/tEgwqvBHv6cBFnTT//VfLNh2kwOjOJItTwfEmVmePhjmJHfV0CisjxqaiQ9AJCNwvfu1zpr1dptvANS9NoIk4TCto7gRsM79R633SS2cIEuvXUAs7KzPoqdjYnSM8BcCttHLz8UbaPPYhjxx1MS2sCfUYovjqtGa9QwkZVBPxrfuPHsJNn3XchTO2h1pm/c/kim2kyu3R3worzcTSZsjGIk+QMWdvfEXc/PNYUGASA0EmP/16IMCltnODY9gQ9ddV0LfXeNKw==-IB8jmkQf1OtvVXZsqoO/cT0Ou93Dx7JlMOTGdQ==--tp-49:4A:E1:31:6B:95:39:AD:47:6D:63:F6:1E:72:F7:D1:B5:65:36:00--.

所以,Websocket url 很像这样"wss://10.160.122.169/902;cst-xlIs3pP+C/oL/tEgwqvBHv6cBFnTT//VfLNh2kwOjOJItTwfEmVmePhjmJHfV0CisjxqaiQ9AJCNwvfu1zpr1dptvANS9NoIk4TCto7gRsM79R633SS2cIEuvXUAs7KzPoqdjYnSM8BcCttHLz8UbaPPYhjxx1MS2sCfUYovjqtGa9QwkZVBPxrfuPHsJNn3XchTO2h1pm/c/kim2kyu3R3worzcTSZsjGIk+QMWdvfEXc/PNYUGASA0EmP/16IMCltnODY9gQ9ddV0LfXeNKw==-IB8jmkQf1OtvVXZsqoO/cT0Ou93Dx7JlMOTGdQ==--tp-49:4A:E1:31:6B:95:39:AD:47:6D:63:F6:1E:72:F7:D1:B5:65:36:00--",其中 902 是 vCloud Director 返回的端口。

在我创建了这个 Websocket 之后,我的onopen函数被调用了,这是否意味着建立了连接?然而,在一两秒后,websocketonclose被调用。这是说服务器正在关闭连接吗?事件代码是 1006...

我怎样才能在这个问题上进行更多调试?

4

1 回答 1

3

关闭代码 1006 表示套接字只是“丢弃”(TCP 断开连接)而没有收到 Web 套接字协议关闭帧(https://www.rfc-editor.org/rfc/rfc6455第 7.1.5 节)

发生这种情况的原因有很多——可能是网络基础设施参差不齐,甚至是 Web 套接字协议层的部分实现不稳定。

但是,由于您使用的是 SSL 连接,因此另一种可能性是对正在使用的证书存在分歧。也许如果服务器端证书是自签名的并且您没有在启动连接的浏览器中安装它(或者它使用某种内部 CA 并且该 CA 无法识别)。不幸的是,大多数浏览器在遇到带有 Web 套接字的不良证书时并没有提供太多信息 - 没有“你想信任这个证书”警报(与 https 不同)。

您还应该检查您拥有的票证是否需要进行 URL 编码 - 该字符串中的“=”字符可能需要替换为 %3d(url 编码)。虽然老实说我不记得服务器端 Web 套接字处理程序是否需要它。

于 2015-05-23T12:33:39.147 回答