Netty Websocket SSL客户端在握手成功后不工作



我想使用Netty框架创建一个安全的websocket客户端-服务器通信。我看了netty的例子,有一个websocket ssl服务器的例子:https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/http/websocketx/sslserver

还有另一个使用websocket客户端,但没有ssl的例子:https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/http/websocketx/client

所以我把SslHandler作为ChannelPipelinehandle的第一个处理程序,建议在这里:如何使用netty websocket客户端与wss?

但它仍然不起作用。客户端成功连接到服务器(握手成功),但是当客户端向服务器发送消息(例如PingWebSocketFrame或任何其他WebSocketFrame)时,什么都没有发生。服务器没有收到任何消息。

你知道哪里出了问题吗?

编辑:我使用4.0.0。确切地说,服务器总是接收一些东西,但只接收第一个SSLHandler。管道中的下一个处理程序(HttpRequestDecoder)然后只偶尔接收消息,当它接收消息时,它创建DefaultHttpRequest并出现以下错误:

decodeResult:失败(. lang。IllegalArgumentException:无效版本格式:|￳LZS

那些奇怪的字符应该可能代表一个HTTP版本,但它看起来像SSLHandler没有正确解码它们?

我也有同样的问题(你可以在这里看到stackoverflow的帖子)。

客户机上的示例代码使用channel.write()方法,该方法似乎不会将消息转发给Websocket ssl服务器。通过使用channel.writeAndFlush()代替,消息被正确地发送到服务器。

所有这些都使用netty 4.0.9进行了测试。最终版本

最新更新