掉坑之路
最近小程序的热度一直不减(天两天官媒还报道小程序工厂哄抬物价来着^_^)。我们公司也不能落后啊,赶时髦上小程序yeyeye...
不过呢,这次小程序除了要采用https协议与服务端通信之外,还要实现通过websocket连接MQTT收发消息的功能。起初呢...心里规划了一下,信誓旦旦、信心满满的撸起袖子准备干了,装证书、配端口、约定连接参数,正要见证奇迹发生的时候,突然就没有任何预感的掉坑里了---Android平台上小程序报证书错误....
先把问题贴出来
历险爬坑
根据小程序连接报错信息来看,问题原因看起来很明显了,那就顺藤摸瓜的解决问题吧...
首先说一下报错情况下的wss连接方式与服务架构模式:
消息服务组件:emq
因为emq本身提供了ssl及wss协议的支持,所以开始就用的emq的配置
emq-ssl配置:
emq-wss配置:
由于小程序不能直接通过端口号与服务端通讯,所以添加了一层nginx代理
小程序端连接方式为:wss://域名/mqtt
看起来非常清晰简单,wss原理就是对https的协议的upgrade,可是就是不通....仔细观察考虑一下问题出在哪里呢,其实在这种模式下原因就出在对应的ssl代理端口与emq-wss端口的冲突。
那么试着修改一下,
emq-wss部分:
nginx:
修改之后再连接试一次,OK了!
回头看坑
问题解决后,不禁会思考问题的根本原因出在哪里,因为小程序的js爆出的是证书验证路径异常,初步猜测是跟Android平台的ssl连接机制有关系,待进一步考证确认。
如有类似问题的小伙伴,欢迎留言一起探讨问题
网友评论