# netty 配置 wss访问
## 1.获取证书
可以选择[自制证书](生成自签名证书.md),或者获取 [Let`s Encrypt证书](LetsEncrypt.md)
## 2.配置handler
``` java
public class ChannelHandler extends ChannelInitializer {
@Override
protected void initChannel(SocketChannel channel) throws Exception {
String certPath = "/etc/letsencrypt/live/example.com";
if (new File(certPath).exists()) {
final File certFile = new File(certPath + "/cert.pem");
final File keyFile = new File(certPath + "/privkey.pem");
SslContext sslContext = SslContextBuilder.forServer(certFile, keyFile).build();
channel.pipeline().addLast(sslContext.newHandler(channel.alloc()));
}
// 设置30秒没有读到数据,则触发一个READER_IDLE事件。
// pipeline.addLast(new IdleStateHandler(30, 0, 0));
// HttpServerCodec:将请求和应答消息解码为HTTP消息
channel.pipeline().addLast("http-codec", new HttpServerCodec());
// HttpObjectAggregator:将HTTP消息的多个部分合成一条完整的HTTP消息
channel.pipeline().addLast("aggregator", new HttpObjectAggregator(65536));
// ChunkedWriteHandler:向客户端发送HTML5文件
channel.pipeline().addLast("http-chunked", new ChunkedWriteHandler());
// 在管道中添加我们自己的接收数据实现方法
channel.pipeline().addLast("handler", new MyWebSocketServerHandler());
}
}
```