问题描述:

  在处理室内数据推送的时候,服务器能正常接收并处理请求,,客户端也能正常接收消息 但是在每次收到消息后,微信界面会出现,“该公众号提供的服务出现故障”字样。

 

解决思路一:消息去重

  根据以往的经验,首先想到的就是消息处理不及时的问题。于是采用以前的方法进行消息去重,(详见微信公众平台开发中重复响应问题),但是改了之后仍然出现 “该公众号提供的服务出现故障”务的提示。

 

解决思路二:提高响应速度

  其次,想提高一下数据响应速度,以为是查询数据库延时 后面直接不查询数据库了  直接在服务器端把数据写死 结果还是出现这个问题

 

解决思路三:提高响应速度

  由于项目是在测试阶段,我使用的是ngrok作为内网穿透,由于使用的是免费隧道,会出现带宽低,不稳定等状况,然后我们去买了一条vip隧道,重新测试,还是没有解决这个问题。

 

解决思路四:

  自己用debug跟进 发现dealEvent值为null 意思是返回为微信服务器的值为null 看到这里 自己的敏锐的觉得问题应该出在这,因为模板消息是异步发送的 模板消息的发送地址和微信请求需要的响应地址不一定一样。因此在业务处理过程中,由于是异步发送模板消息,因此客户端能正常接收到模板消息 但是当请求方法执行完 继续往下执行的时候 会返回null 微信服务器接收到这个null响应后 直接提示给用户服务出现故障 。于是我就把null改成回复“ ”字符串 果然 微信能正常接收到模板消息 并且没有提示公众号出现异常  并且 由于返回的空字符串不符合消息响应格式(微信需要的是xml数据包)用户也不会接收到这个字符。