赞
踩
腾讯文档采用的是轮询的方式,我在这里采用websocket的方式.
这里运用了github上基于微信SDK的更易用的SDK weixin-java-miniapp
<!--springboot整合了websocket-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>3.3.0</version>
</dependency>
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
这里的socketKey对应@PathParam定义的名字,用来识别唯一的socket连接
@Component @ServerEndpoint(value = "/socketLogin/{socketKey}") public class LoginSocket { private static Logger log= LoggerFactory.getLogger(LoginSocket.class); private static ConcurrentHashMap<String, Session> sessionMap = new ConcurrentHashMap<>(); private Session session; /** * 连接建立成功调用的方法*/ @OnOpen public void onOpen(Session session, @PathParam("socketKey")String socketKey) { this.session=session; log.info("[微信小程序websocket]socketKey:{}",socketKey +"-->建立连接"); sessionMap.put(socketKey,session); } /** * 连接关闭调用的方法 */ @OnClose public void onClose(@PathParam("socketKey") String socketKey) { log.info("[微信小程序websocket]socketKey:{}",socketKey +"-->断开连接"); sessionMap.remove(socketKey); } public ConcurrentHashMap<String, Session> getSessionMap() { return sessionMap; } }
开发之前需要准备好申请的小程序APPID SECRET
编写工具类(整合weixin-java-miniapp),这个工具类根据自身需求,灵活设置WxMaInMemoryConfig里面的内容
@Configuration public class WxMaConfiguration { private static String appId; private static String secret; @Value("${weixin.applet_appid}") public void setAppId(String appId) { WxMaConfiguration.appId = appId; } @Value("${weixin.applet_secret}") public void setSecret(String secret) { WxMaConfiguration.secret = secret; } private static WxMaService wxMaService=null; @Bean public Object services(){ WxMaInMemoryConfig config = new WxMaInMemoryConfig(); config.setAppid(appId); config.setSecret(secret); wxMaService = new WxMaServiceImpl(); wxMaService.setWxMaConfig(config); return Boolean.TRUE; } public static WxMaService getWxMaService(){ return wxMaService; } }
建议小程序二维码里面的scene参数和建立websocket连接的key保持一致
pathStr:小程序登录成功后微信小程序的跳转地址,而不是网页的跳转地址.如:pages/index/index
注意此处:3.3.0之前版本的 weixin-java-miniapp无法通过createWxaCodeUnlimitBytes返回byte字节,返回的都是File文件
/**
*
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。