Linux + SpringBoot + Netty-SocketIo

welchang發表於2021-09-09

前言

最近專案在升級為 https ,先把一些常規的模組(頁面,服務等部署在 tomcat 中的)升級了,利用 ssl 證照透過 tomcat 重定向到 443(預設) 埠就解決了,但是有一個 springboot 寫的 netty-socketio 的聊天服務也要升級,剛開始思路錯了以為也要 tomcat 重定向埠,折騰了半天不行;最後看到一篇文章只是在 socketio 的 configuration 中設定證照引數就行了⊙﹏⊙‖∣,因為踩了坑所以記錄一下,以備不時之需。

這裡預設已經有一個用 springboot 寫好的 netty-socketio 專案了(網上有很多),並且有一個 jks 型別的證照檔案(如何獲得網上也有很多)

然後才開始配置 https。

一、將證照檔案(jks)複製到 springboot 專案的 resource 目錄下

圖片描述

二、不用修改任何檔案,只是在 socketio 的 configuration 中設定證照

修改前:

@Bean(name = "configuration")
    public com.corundumstudio.socketio.Configuration getCofiguration() {
        com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration();
        //伺服器主機ip,這裡配置本機
        config.setHostname("172.18.211.50");
//        config.setHostname("192.168.3.88"); // 本機
//        config.setHostname("120.78.145.39");
        //  System.out.println(setHostname);
        //埠,任意
        config.setPort(9108);
        config.setMaxFramePayloadLength(1024 * 1024);
        config.setMaxHttpContentLength(1024 * 1024);
        return config;
    }

修改後:

@Bean(name = "configuration")
    public com.corundumstudio.socketio.Configuration getCofiguration() {
        com.corundumstudio.socketio.Configuration config = new com.corundumstudio.socketio.Configuration();
        //伺服器主機ip,這裡配置本機
        config.setHostname("172.18.211.50");
//        config.setHostname("192.168.3.88"); // 本機
//        config.setHostname("120.78.145.39");
        //  System.out.println(setHostname);
        //埠,任意
        config.setPort(9108);
        config.setMaxFramePayloadLength(1024 * 1024);
        config.setMaxHttpContentLength(1024 * 1024);
        InputStream resourceAsStream = this.getClass().getResourceAsStream("/chuniaoedukey.jks");  // 讀取證照檔案流
        config.setKeyStore(resourceAsStream);  // 設定證照檔案
        config.setKeyStorePassword("cqrrkj2020");  // 設定證照密碼
        return config;
    }

三、linux 部署 springboot 專案

# 設定輸出目錄 啟動 springboot jar
nohup java -jar xxx.jar > catalina.out  2>&1 &

最後,透過 (虛擬的域名,改成自己的) 連線就行了,以前是連線 ,注意直接瀏覽器訪問會報400的錯誤因為這是 socketio 監聽的埠不能直接以介面的形式對其訪問,只能用 socketio 客戶端進行測試驗證。

總結

netty-socketio 服務與其他的介面服務有些異同,不能透過 tomcat 轉發埠的形式進行 https 訪問,但是 netty-socketio 內部對 https 支援,直接簡單設定證照資訊就能實現。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4830/viewspace-2825828/,如需轉載,請註明出處,否則將追究法律責任。

相關文章