阿里云APush集成教程
背景
需要提供一个公共的“消息推送”模块,需要涉及集成webSocket,但集成原生ws时间成本较大,且需要考虑后期业务发展,会出现性能优化、分布式场景兼容等问题,优先考虑使用阿里云市场API,集成APush来实现ws消息接收、发送等功能。
什么是APush
基于websocket的消息推送中间件,为web页面、移动设备(Android,IOS)和嵌入式设备提供实时消息能力。
实现机制
交互流程
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的客户端收到消息
集成示例
前端
1、引用apush.js,搭建环境
2、根据AppId、tokenUrl、回调方法等参数,初始化apushClient,通过身份验证,建立ws连接
后端
主要负责身份校验token,与提供发送消息、查询ws user连接数的能力,需要根据APPCODE与APush进行通信,调用API。
getToken
sendMsg/sendPersistentMsg
getConnectionCountByUserId
常见问题
1、getToken请求成功,却无法创建createClient。
初始化Client,获取token的操作,封装在createClient()里,以GET请求的方式向服务端发送请求,且需要返回的token是个未被包装的字符串。
2、发送消息请求成功,返回结果为“Request failed with status code 450”
状态码为4xx一般为请求姿势不对,APush sendMsg接口,虽然为POST请求,参数却是跟在url后端的。
3、跨域问题
检查前后端对应的appId是否一致