0

我正在接管一个使用Kaazing Websocket (JMS edition) 客户端 javascript 库通过 Web 套接字连接连接到服务器的 iOS 应用程序。

我正在为我的 iOS 应用程序使用 Phonegap,并且能够在 Chrome 和 iOS 模拟器上对其进行测试。大约 30% 的时间我从 chrome 上的库测试中得到连接错误,70% 的时间在 iOS 模拟器/设备上进行测试。我在缩小的 js 库中抛出了一个异常,它只是说“ConnectionFailedException:Websocket 连接失败”似乎这是一个浏览器特定的问题,但我对此无能为力。

我不能直接查看位于英国的服务器,而是要求他们提供调试日志。所以我从服务器询问了日志,这些是我发现的错误,这可能是原因:

2014-03-05 08:09:23,670 [NioProcessor-15] DEBUG session.revalidate - 未配置 WebSocket 授权超时,因此无法推断出重新验证期。
2014-03-05 08:09:23,670 [NioProcessor-15] INFO session.revalidate - WebSocket 会话 [176128] 没有被重新验证,因为没有为协商的“x-kaazing-http-revalidate”扩展指定超时.

任何人对此有任何想法x-kaazing-http-revalidate,如果没有,调试这些 Websocket 连接的正确方法是什么?

4

1 回答 1

3

完全免责声明,我在 Kaazing 工作。

x-kaazing-http-revalidate是 Kaazing HTTP 扩展,在建立 WebSocket 连接时协商。这是通过在 gateway-config.xml 文件中设置授权超时来完成的(我们发布的配置文件有一个示例)。此扩展的目的是定期重新验证用户的授权,因为权利可能会在长时间运行的连接期间发生变化。

ConnectionFailedException : WebSocket connection failed 如果与服务提供者相关的某些中介/代理在 WebSocket 连接请求中注入未知或可疑的标头,则可能会发生。如果注入的标头未知/可疑,则 Kaazing 网关将不会完成连接,以避免入侵者窃听。使用安全的 TLS/SSL 连接应该可以解决与中介相关的问题。

要调试和设置安全的 javascript 客户端,请按照文档中的说明进行操作。您还可以在jms-javascript.html文件中使用带有脚本标签的WebSocket-debug.js而不是 WebSocket.js来进行更多日志记录。还有一个演练:将 JavaScript JMS 应用程序部署为混合 iOS 应用程序

于 2014-06-04T21:35:47.613 回答