我需要在建立websocket连接之前修改 ws 网址。
我在服务器代码中使用@ManagedService
并使用$.atmosphere.subscribe(request)
从客户端订阅。
我有以下设置:
Cyberoam firewall --> Apache httpd(mod_proxy_ajp,mod_jk for load balancing) --> Glassfish
Primary Transport --> WebSocket
Fallback Transport --> long-polling
我面临的问题:
Cyberoam防火墙有一个限制(在WAF中),GET URL中的最大字符数不能超过 50个字符。但是当我在氛围中点击订阅时,它正在构建包含所有X-Atmosphere-..
参数的URL。
例如明显超出允许限度的ws://localhost:8080/chat?X-Atmosphere-tracking-id=5ebed4c5-0b90-4166-88b2-9f273719ab75&X-Atmosphere-Framework=2.2.1-jquery&X-Atmosphere-Transport=websocket&Content-Type=application/json&X-atmo-protocol=true")
。
我只需要知道我是否可以在我的服务器代码中以某种方式构建URL,在连接之前附加所有必需的头和参数?
是的,我在发出初始请求时设置了attachHeadersAsQueryString:false
,显然它在进行WebSocket连接时没有连接丢失的头信息。
任何建议/想法都将不胜感激。 谢谢。
答案 0 :(得分:1)
使用request.attachHeadersAsQueryString = false,以便传递mo查询字符串。您可能需要升级到最新版本的Javascript
https://github.com/Atmosphere/atmosphere-javascript
- Jeanfrancois(Atmosphere'领导)