netty中websocket使用wss

阅读数:153 评论数:0

跳转到新版页面

分类

python/Java

正文

一、ws和wss的区别

ws是websocket协议,wss是websocket的加密版本。

二、netty如何使websocket支持wss

如果网站用https的话,浏览器就不可以使用ws的websocket,必须使用wss。

1、从域名服务端下载免费的jks证书。

2、在netty的ChannelPipeline中添加ssl handler,并且放在first即可。

3、相关代码

public class SslUtil {
    private static volatile SSLContext sslContext = null;

    // type是PKCS12、path是pfx文件路径、password是pfx对应的密码
    public static SSLContext createSSLContext(String type , String path , String password) throws Exception {
        if(null == sslContext){
            synchronized (SslUtil.class) {
                if(null == sslContext){
                    // 支持JKS、PKCS12
                    KeyStore ks = KeyStore.getInstance(type);
                    // 证书存放地址
                    InputStream ksInputStream = new FileInputStream(path);
                    ks.load(ksInputStream, password.toCharArray());
                    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
                    kmf.init(ks, password.toCharArray());
                    sslContext = SSLContext.getInstance("TLS");
                    sslContext.init(kmf.getKeyManagers(), null, null);
                }
            }
        }
        return sslContext;
    }
}
// 以下为要支持wss所需处理,添加ssl handler,并且放在First
        try {
            SSLContext sslContext = SslUtil.createSSLContext(CC.mp.net.wss_cert_type,
                    CC.mp.net.wss_cert_path,CC.mp.net.wss_cert_password);
            SSLEngine sslEngine = sslContext.createSSLEngine();
            sslEngine.setUseClientMode(false);
            sslEngine.setNeedClientAuth(false);
            pipeline.addFirst("sslHandler",new SslHandler(sslEngine));
        }catch (Exception e){
            e.printStackTrace();
        }



相关推荐

websocket协议基于tcp的网络协议,它实现浏览器与器全双工通信。 spring boot2 +websocket 1、添加依赖 <pre clas

就像Java和JavaScript,并没有什么太大的关系,但又不能说完全没有关系。 socket本意指端到端的一个连接,socket是对TCP/IP协议的封装,本身并不是协议,而是

netty提供了6种不同的websocket类型: (1)BinaryWebsocketFrame,二进制数据类型 (2)TextWebSocketFrame,文本数

通过WebSocketServerProtocalHandler可以指定客户端访问服务器时候的url,例如 pipe