【发布时间】: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