如果服务器不接受扩展名,则禁用客户端扩展名

时间:2018-12-14 04:58:23

标签: websocket netty

我有一个使用netty WebSocketClientCompressionHandler支持压缩扩展的WebSocket客户端。为了使此扩展正常工作,我需要在使用allowExtensions创建newHandshaker时将WebSocketClientHandshakerFactory的值设置为true。

在服务器不支持这些扩展名的情况下,它会在没有Sec-WebSocket-Extensions的情况下进行响应。如果是这种情况,则使用保留(RSV)位时,客户端应立即终止连接。

由于我在创建WebSocketClientHandshaker之前无法获得服务器的任何响应,因此当我得知服务器不支持扩展名后,无法将allowExtensions的值设置为false 。

在收到服务器的响应(或通知netty)后,是否可以将allowExtensions的值设置为false,以便如果由于协议冲突而将RSV位置1,netty将关闭连接?

(对于服务器实现,我确实在创建握手之前检查Sec-WebSocket-Extensions的客户端请求标头。)

1 个答案:

答案 0 :(得分:0)

我唯一的解决方法是在握手完成后替换java,如果握手响应没有扩展头,则将WebSocketFrameDecoder的值设置为false:

allowExtensions