最近在做一個商城項目,項目中遇到這樣一個問題,不知道大家有沒有做過小程序開發的。
websocket正常連接的請求是ws://*********,但是小程序則不同必須是wss://********。也就是說要想使前端小程序連接到你后台代碼里的socket必須是https加密請求。
說到這,相信很多朋友都會想到,配一個ngix不就完了嗎。我和你說沒毛病,生產環境下根本就不需要考慮這個問題,因為它本身就是https請求,那么你在本地開發尼,如果你是小公司尼。
難道,你每次都需要前台人員去修改自己的host去映射你的ngix地址?前提是人家還得會,對吧。
話不多說直接上解決辦法:
一、首先你需要生成一個ssl認證證書,這一步我不在闡述,自己百度去搜JDK生成ssl認證證書,這一步都一樣,隨便點開一個就可以。
不過有兩個問題需要注意:
1.如果你的c盤設置過只讀,那么你在生成的時候需要修改一下路徑換一個盤符就可以。
2.切記,更換了磁盤一定要修改你環境變量中對應的生成路徑,不然會找不到,切記切記切記!!!!
二、操作完第一步之后會生成一個keystore.p12文件將這個文件放到你項目的源路徑下,如下圖:
三、在application.properties中添加如下配置:
password,keyStoreType,keyAlias是在你生成keystore.p12的文件時候你自己填的什么,這里就寫什么。
四、在啟動類中添加如下代碼:
/**
* 創建wss協議接口
* @return
*/
@Bean
public TomcatContextCustomizer tomcatContextCustomizer() {
System.out.println("TOMCATCONTEXTCUSTOMIZER INITILIZED");
return new TomcatContextCustomizer() {
@Override
public void customize(Context context) {
context.addServletContainerInitializer(new WsSci(), null);
}
};
}
這段代碼就是將小程序的wss請求轉換成https協議。
好了以上就是本次分享內容,如果各位有什么不對的地方請各位大神指出來,在此小編謝謝各位啦!!!