我有一个使用netty WebSocketClientCompressionHandler
支持压缩扩展的WebSocket客户端。为了使此扩展正常工作,我需要在使用allowExtensions
创建newHandshaker
时将WebSocketClientHandshakerFactory
的值设置为true。
在服务器不支持这些扩展名的情况下,它会在没有Sec-WebSocket-Extensions
的情况下进行响应。如果是这种情况,则使用保留(RSV)位时,客户端应立即终止连接。
由于我在创建WebSocketClientHandshaker
之前无法获得服务器的任何响应,因此当我得知服务器不支持扩展名后,无法将allowExtensions
的值设置为false 。
在收到服务器的响应(或通知netty)后,是否可以将allowExtensions
的值设置为false,以便如果由于协议冲突而将RSV位置1,netty将关闭连接?
(对于服务器实现,我确实在创建握手之前检查Sec-WebSocket-Extensions
的客户端请求标头。)
答案 0 :(得分:0)
我唯一的解决方法是在握手完成后替换java
,如果握手响应没有扩展头,则将WebSocketFrameDecoder
的值设置为false:
allowExtensions