最近在做一个商城项目,项目中遇到这样一个问题,不知道大家有没有做过小程序开发的。
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协议。
好了以上就是本次分享内容,如果各位有什么不对的地方请各位大神指出来,在此小编谢谢各位啦!!!
原文:https://www.cnblogs.com/yun-tian/p/12048185.html