一直就想搭建消息队列的,因为目前业务发展还没有到这块,一直没有搭建。刚好今天接到的一个需求是web系统实现微信扫码登录,另外我们的微信对接是统一的中台接口对接,所以我们没办法做到回调我们的web业务系统。于是经过与同事讨论,分析场景逻辑,得出了一套web与中台、微信、消息服务的交互。

经过一夜消化,我画出了如下时序图

这里说明下,首先微信公众号只能绑定有限的回调域名,这大家都知道。因为我们公司的项目比较多,所以我们统一中台对接微信公众号,实际就是为了能有一个公用的微信openId。这个id是微信再每个平台的唯一标识,因为都用于我们的系统,所以这个id我们要一个就ok了,实际上别的公司以后可以对接我们的这个服务,实现web系统微信扫码登录。就跟我上次统一的支付平台一样。要知道微信的这个扫码登录得300块钱啊。

二、实现的模式

后端放置消息到消息队列,主题就是终端的clientId,终端的websocket连接消息队列的ws服务,主题监听clientId。所以就实现了点对点(开2个浏览器也不怕,因为我们用的时间戳,不会有这么巧精确到毫秒吧)。

前端通过收到的信息,其实这个信息我也包装下成http接口请求返回有code,msg,data一样格式的json字符串。这样就当是前端请求接口的返回数据一样,根据code值做不同的业务响应。

三、遇到的坑

先前我花了大力气有了初步想法,找中台讨论,推动搭建消息队列,但是似乎不怎么认可方案。然后,第二天一大早我就来画的时序图,加上我之前其实搭建过MQTT服务,并且自己玩了下。我就利用这验证了我的方案可行,可以说是从后端、前端、mqtt服务,我自己都串起来,验证可行了。终于是说服了对方支持,得亏最近在看书,要是以前,我TM就自己带着前端去玩了。然后他有要用他熟悉的RabbitMQ,鄙视我用的apollo不能集群。我实际上就只要你的服务,那你说怎么就怎么吧。消息我自己发,不用中台提供接口。后来又说一个终端建一个主题伤性能,之前我说1000人同时高并发,反驳我时做梦。。。

宝宝心里苦啊,想搞点新玩意,促进大家一起进步,真的是带不动。

mqtt的相关代码,涉及到公司机密就不贴了,apollo的网上一大把,按照我的这个时序就可以省300每年,不用微信的扫码登录,实在有疑惑的地方,可以博客留言。我这里也就不贴代码了,唯一说洗啊就是内容有中文,前端收到的有乱码的问题。我这里是用的org.fusesource.hawtbuf的AsciiBuffer转码。

浏览器WebSocket连接apollo的MQTT实现消息推送(WEB系统微信扫码登录)相关推荐

  1. Activemq MQTT 简单消息推送示例

    Activemq MQTT 简单消息推送示例 简介     简单使用 MQTT 连接 Activemq 进行消息推送的示例代码 编写详情 环境准备     使用docker启动Activemq,查看M ...

  2. 服务器如何向c winform推送信息,C局域网聊天工具消息推送实现思路与源码.doc

    C局域网聊天工具消息推送实现思路与源码 C#局域网聊天工具怎么实现? 网络通讯编程的基础便是协议,信息的发送常用的协议有面向连接的TCP协议,以及不面向连接的UDP协议TCP:Transmission ...

  3. Android MQTT实现消息推送

    飞哥语录:编程说白了就是发送数据,接收数据,处理数据. 1.概述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有 ...

  4. 使用spring boot +WebSocket实现(后台主动)消息推送

    前言:使用此webscoket务必确保生产环境能兼容/支持!使用此webscoket务必确保生产环境能兼容/支持!使用此webscoket务必确保生产环境能兼容/支持!主要是tomcat的兼容与支持. ...

  5. 国内APP消息推送机制以及微信消息延迟问题剖析

    转自:https://club.huawei.com/thread-15878044-1-1.html 一.前言 随着安卓手机以及QQ/微信/支付宝/滴滴出行/美图外卖等一大批移动通信/移动消费应用的 ...

  6. 【个人开发】通过企业微信实现消息推送到个人微信

    1. 背景 个人有个消息推送到任务,一直在飞书上跑,消息触达率太低,寻思着尝试用一些方法,将消息推送到微信. 2. 写在前面 坑1:寻思着企业微信有机器人,将机器人所在群拉上微信号,结果,企业微信不允 ...

  7. 基于MQTT的消息推送

    这段时间学习了推送技术,对xmpp和mqtt 协议做了下比较. xmpp基于xml信息传递,所以传输信息量比较大,在保持长链接情况下功耗会比较大. 可能还是比较适合用来做聊天之类的通讯应用,而对于智能 ...

  8. .net 服务器推送信息,.net websocket服务端开发,实现消息推送功能

    WebSocket协议是一种双向通信协议,它建立在TCP之上,同http一样通过TCP来传输数据,但是它和http最大的不同有两点: WebSocket是一种双向通信协议,在建立连接后,WebSock ...

  9. 使用spring boot +WebSocket实现(后台主动)消息推送支持单独推送,多人推送 全部推送

    首先看下效果图,如果不是你想要的功能,直接pass 如果能符合需求 可以自己在线上地址测试一波 在线测试地址: 服务端:http://www.isuyu.cn:8086/admin 客户端: http ...

最新文章

  1. 编写MapReduce程序,统计每个买家收藏商品数量,实现统计排序功能
  2. 窃喜,第一次修改开源的东西
  3. (转载)jdbc事务处理
  4. 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
  5. C语言中:在头文件中使用static定义变量意味着什么?
  6. csrf攻击防御 php,Yii2.0防御csrf攻击方法
  7. 372. Super Pow
  8. sklearn 随机森林
  9. 低代码,是否能“取代”开发者?
  10. centos7下安装python3 解决openssl等一系列问题
  11. 跟锦数学2017年01月
  12. 零基础学sql要多久_零基础如何学习游戏3D建模,要学些什么内容?学多久?
  13. windows环境下zookeeper做成服务并启动
  14. 中美线径对照表_美标线径与国标对照
  15. CTPN算法简单解析
  16. 如何从0到1进行电商平台订单系统的搭建?
  17. element el-table表头添加背景图片
  18. python sklearn PR曲线 AUPR值
  19. 石川:异象、因子和多因子模型
  20. JAVA计算机毕业设计藏宝阁游戏交易系统Mybatis+系统+数据库+调试部署

热门文章

  1. react proptypes
  2. 微信小程序运动步数java_微信小程序实现运动步数排行功能(可删除)
  3. addBatch()用法
  4. 小巧精致的真无线耳机,音质很不错,瓷音未来Mars体验
  5. Android Kotlin学习笔记(一)—— Kotlin Koans
  6. Paper reading:Few-Shot Class Incremental Learning Leveraging Self-Supervised. CVPR2022workshop
  7. C1任务03 Web的世界(下)
  8. 区域环评项目(Vue3 PC)实现验证码等功能 问题记录
  9. APP抓包神器drony
  10. FFB6D 论文阅读