我想使用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进行了测试。最终版本