换个姿势爬坑--android平台wss协议连接记录

掉坑之路

    最近小程序的热度一直不减(天两天官媒还报道小程序工厂哄抬物价来着^_^)。我们公司也不能落后啊,赶时髦上小程序yeyeye...

  不过呢,这次小程序除了要采用https协议与服务端通信之外,还要实现通过websocket连接MQTT收发消息的功能。起初呢...心里规划了一下,信誓旦旦、信心满满的撸起袖子准备干了,装证书、配端口、约定连接参数,正要见证奇迹发生的时候,突然就没有任何预感的掉坑里了---Android平台上小程序报证书错误....

先把问题贴出来

换个姿势爬坑--android平台wss协议连接记录_第1张图片

历险爬坑

   根据小程序连接报错信息来看,问题原因看起来很明显了,那就顺藤摸瓜的解决问题吧...

首先说一下报错情况下的wss连接方式与服务架构模式:

消息服务组件:emq

因为emq本身提供了ssl及wss协议的支持,所以开始就用的emq的配置

emq-ssl配置:

换个姿势爬坑--android平台wss协议连接记录_第2张图片
换个姿势爬坑--android平台wss协议连接记录_第3张图片

emq-wss配置:

换个姿势爬坑--android平台wss协议连接记录_第4张图片

由于小程序不能直接通过端口号与服务端通讯,所以添加了一层nginx代理

换个姿势爬坑--android平台wss协议连接记录_第5张图片

小程序端连接方式为:wss://域名/mqtt

看起来非常清晰简单,wss原理就是对https的协议的upgrade,可是就是不通....仔细观察考虑一下问题出在哪里呢,其实在这种模式下原因就出在对应的ssl代理端口与emq-wss端口的冲突。

那么试着修改一下,

emq-wss部分:

换个姿势爬坑--android平台wss协议连接记录_第6张图片

nginx:

换个姿势爬坑--android平台wss协议连接记录_第7张图片

修改之后再连接试一次,OK了!

回头看坑

问题解决后,不禁会思考问题的根本原因出在哪里,因为小程序的js爆出的是证书验证路径异常,初步猜测是跟Android平台的ssl连接机制有关系,待进一步考证确认。

如有类似问题的小伙伴,欢迎留言一起探讨问题

你可能感兴趣的:(换个姿势爬坑--android平台wss协议连接记录)