通过微信客服接口发送一条信息,微信的服务号里却同时接受到三条一模一样的数据。
经过我反复调试,最后发现与微信的响应机制有关:微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。如何避免这个情况?一旦请求超时也只发送一条客户消息。
在客户端与服务器之前做一个心跳连接避免等候时间过程。
private static Map<String,String> map = new ConcurrentHashMap<>();
/**
* 定时每过15s清空微信验证缓存
*/
@Scheduled(cron = "0/15 * * * * ?")
private void clearMap(){
if(null!=map){
map.clear();
}
}
//微信消息排重
if(null!=map){
String createTime =map.get(open_Id);
if(null!=createTime){
if (createTime.equals(time)){
PrintWriter out = response.getWriter();
out.println("");
out.close();
}
}
}
map.put(open_Id,time);