成功握手后,Netty Websocket SSL客户端无法正常工作

时间:2013-06-16 08:28:32

标签: ssl websocket netty

我想使用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中的第一个hander,如下所示:How can use netty websocket client with wss?

但它仍然无效。客户端成功连接到服务器(握手成功),但是当客户端向服务器发送消息时(例如PingWebSocketFrame或任何其他WebSocketFrame)没有任何反应。服务器不会收到任何消息。

你知道可能出现什么问题吗?

编辑:我使用4.0.0.CR5,确切地说,服务器总是收到一些东西,但只有第一个SSLHandler。管道中的下一个处理程序(HttpRequestDecoder)有时只接收一条消息,当它发生时,它会创建DefaultHttpRequest并发生此故障:

decodeResult:failure(java.lang.IllegalArgumentException:无效的版本格式:|￳LZSㅊ

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

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题(你可以看到stackoverflow post here)。

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

所有这些都是使用netty 4.0.9.Final版本进行测试的