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

标签 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,如下所示:How can use netty websocket client with wss?

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

你知道哪里出了问题吗?

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

解码结果:失败(java.lang.IllegalArgumentException:版本格式无效:|￳LZSᄎ

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

最佳答案

我遇到了同样的问题(您可以查看 stackoverflow 帖子 here)。

客户端的示例代码使用了 channel.write() 方法,它似乎没有将消息转发到 Websocket ssl 服务器。通过改用 channel.writeAndFlush(),消息会正确发送到服务器。

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

关于ssl - 握手成功后 Netty Websocket SSL 客户端无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17131461/

相关文章:

node.js - 设置 nginx ssl nodejs+express socket.io angularjs

java - 在 iOS 上信任我自己的 CA

Javascript:使用 Websocket 的类定义

java - 为什么 Direct ByteBuffer 在 HornetQ 服务器上不断增加导致 OOM?

sql-server - JDBC:从 Linux 机器通过 SSL 连接到 MS SQL DB

java - 证书异常 : No subject alternative names present

google-chrome-extension - 在Chrome扩展程序中实现WebSocket

spring-boot - 如何在spring boot(使用netty服务器)中启用websocket消息压缩deflate(使用rsocket协议(protocol))

java - 了解 Netty 内部结构

playframework-2.0 - 如何在playframework 2中配置保持事件超时