使用Websocket连接到虚拟机

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函数被调用了,这是表示连接已经建立了吗?然而,一两秒后,websocket的onclose函数被调用了。这是否意味着服务器正在关闭连接?事件代码是1006...

我该如何更深入地调试这个问题呢?

1个回答

3

关闭代码1006表示套接字在未收到Web套接字协议关闭帧的情况下“断开”(TCP断开连接),详见https://www.rfc-editor.org/rfc/rfc6455第7.1.5节。

造成此问题的原因有很多,例如不稳定的网络基础设施或部分Web套接字协议层的易错实现。

然而,由于您正在使用SSL连接,另一个可能性是证书存在争议。也许服务器端证书是自签名的,并且您没有在启动连接的浏览器中安装它(或者它使用某种内部CA并且该CA未被识别)。不幸的是,大多数浏览器在遇到Web套接字的问题证书时不会提供太多信息 - 没有像https那样的“您是否信任此证书”警报。

您还应检查您拥有的票据是否需要进行URL编码 - 可能需要将该字符串中的“=”字符替换为%3d(URL编码)。但是,我真的不记得服务器端Web套接字处理程序是否要求这样做。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接