【问题标题】:How can I deal with an "Failed to construct WebSocket: The URL is invalid" JavaScript exception?如何处理“无法构造 WebSocket:URL 无效”JavaScript 异常?
【发布时间】:2023-03-08 23:51:01
【问题描述】:

我正在尝试配置我的 Vaadin 应用程序(版本 7.7.15)以支持 IPv6,但不知何故 URL 编码不正确。

例如:如果 ip 是:fd71:2d5a:e15a:1ed3::1,在浏览器上你可以这样访问它:http://[fd71:2d5a:e15a:1ed3::1]

问题是字符“[”被替换为“%5B”,字符“]”被替换为“%5D”。

此编码导致“无法构造 WebSocket:URL 无效;JavaScriptException [SyntaxError]”,如图所示。

但是如果我将 @Push 注释从 @Push(transport = Transport.WEBSOCKET_XHR) 修改为 @Push(transport = Transport.LONG_POLLING),我可以访问 UI,但是 API 调用非常非常慢。

谁能告诉我如何才能使这些字符不被编码?

谢谢你, 乔治

【问题讨论】:

  • 您的服务器或代理似乎不支持 Websockets。您的应用程序可能看起来大部分都在工作,但 Push 无法正常工作。
  • 您可以尝试将 @Push 注释更改为 @Push(transport=Transport.LONG_POLLING) 并检查是否一切正常。这将改变 Push 以使用 HTTP 而不是 Websockets。
  • 感谢您这么快回复。关于您的第一个回复,我有一个问题:它实际上是如何使用 IPv4 地址的?我已将应用程序配置为支持两个 IP 地址 IPv4/IPv6。当我访问它时抛出 IPv4 它工作正常。
  • 看起来它实际上是在 Atmosphere 客户端说 SyntaxError,我猜。 IPv6 URL 中似乎有额外的字符:%5B 和 %5D(即 '[' 和 ']' )。

标签: javascript java vaadin vaadin7


【解决方案1】:

更新:

正如您在下面链接的拉取请求中看到的那样,此错误已解决到 Atmosphere 框架中: https://github.com/Atmosphere/atmosphere-javascript/pull/243

问候, 乔治

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 2018-09-27
    • 2011-10-10
    • 1970-01-01
    • 2016-01-27
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多