阿里云APush集成教程

背景

需要提供一个公共的“消息推送”模块,需要涉及集成webSocket,但集成原生ws时间成本较大,且需要考虑后期业务发展,会出现性能优化、分布式场景兼容等问题,优先考虑使用阿里云市场API,集成APush来实现ws消息接收、发送等功能。

 

什么是APush

基于websocket的消息推送中间件,为web页面、移动设备(Android,IOS)和嵌入式设备提供实时消息能力。

 

实现机制

阿里云APush集成教程

 

交互流程


1、web页面中js调用Apush.createClient方法,创建apush客户端;

2、apush客户端根据createClient方法的getTokenUrl参数请求app应用后台获取登录apush平台所需要的token;

3、app应用后台向阿里云api网关请求客户端登录token;

4、apush客户端获取到登录token后连接apush服务器;

5、app应用向阿里云api网关发送apush消息

6、apush的客户端收到消息

 

阿里云APush集成教程

 

 

集成示例

前端

1、引用apush.js,搭建环境

阿里云APush集成教程

 

2、根据AppId、tokenUrl、回调方法等参数,初始化apushClient,通过身份验证,建立ws连接

 

阿里云APush集成教程

 

后端

主要负责身份校验token,与提供发送消息、查询ws user连接数的能力,需要根据APPCODE与APush进行通信,调用API。

getToken

阿里云APush集成教程

 

 

sendMsg/sendPersistentMsg

 

阿里云APush集成教程

getConnectionCountByUserId

阿里云APush集成教程

 

 

 

常见问题

1、getToken请求成功,却无法创建createClient。

初始化Client,获取token的操作,封装在createClient()里,以GET请求的方式向服务端发送请求,且需要返回的token是个未被包装的字符串。

2、发送消息请求成功,返回结果为“Request failed with status code 450”

状态码为4xx一般为请求姿势不对,APush sendMsg接口,虽然为POST请求,参数却是跟在url后端的。

3、跨域问题

阿里云APush集成教程

检查前后端对应的appId是否一致