即时通讯使用|极光通讯用于java web即时通信---构建idea下maven+springboot第三方即时通讯

极光开发者文档:https://docs.jiguang.cn//jmessage/guideline/jmessage_guide/
项目需求:开发java项目的过程中用websocket,由于websocket在负载等各方面的影响考虑使用第三方通讯框架集成到项目里。
【即时通讯使用|极光通讯用于java web即时通信---构建idea下maven+springboot第三方即时通讯】了解极光通讯(极光 IM Web SDK + 极光 JMessage Java SDK)原理
即时通讯使用|极光通讯用于java web即时通信---构建idea下maven+springboot第三方即时通讯
文章图片

实现思路:通过在web端注册用户,同时把server端用户设置为管理员用户admin,通过Java server 的sendMeaasge()实现admin向其他用户发送消息。实现后台向前端的消息推送的目的。同时可以利用极光提供的群聊天、聊天室的原理实现多个消息推送。
极光 IM Web SDK配置
下载SDK Web源码,进行初始化:
即时通讯使用|极光通讯用于java web即时通信---构建idea下maven+springboot第三方即时通讯
文章图片

初始化重点是当前时间戳(timestamp)精确到毫秒,signature根据签名生成算法进行MD5加密。appkey是开发者在极光平台注册的IM应用appkey(这个很基础,设置正确就可以)。
初始化完成以后,进行注册登录用户等。
JMessage Java SDK配置
下载java SDK源码,配置appkey,masterSecrect。本项目中只用到了message模块,通过testSendSingleTextByadmin()是实现服务器端的admin用户像web端的用户发送消息。如下发送testConnection。

@RequestMapping(value = https://www.it610.com/article/{"/testSendSingleTextByAdmin"}, method = RequestMethod.POST) public NoteRequest testSendSingleTextByAdmin() { JMessageClient client = new JMessageClient(appkey, masterSecret); NoteRequest res = new NoteRequest(); Data dataList=new Data(); dataList.setKey("dataTestbyCheng"); try { MessageBody body =MessageBody.text("testConnection"); SendMessageResult result = client.sendSingleTextByAdmin("chengminjie2", "admin", body); LOG.info(String.valueOf(result.getMsg_id())); } catch (APIConnectionException e) { LOG.error("Connection error. Should retry later. ", e); } catch (APIRequestException e) { LOG.error("Error response from JPush server. Should review and fix it. ", e); LOG.info("HTTP Status: " + e.getStatus()); LOG.info("Error Message: " + e.getMessage()); } return res; }

集成springboot项目里
根据springboot的组织结构把java SDK和webSDK填充到项目里。值得注意的是maven里的pom引入的依赖跟官网上的不同,可能是版本没有即时更新。笔者引入的依赖为:
cn.jpush.api jmessage-client 3.4.2 cn.jpush.api jiguang-common 1.1.4 com.google.code.gson gson 2.3 org.slf4j slf4j-api 1.7.7 org.slf4j slf4j-log4j12 1.7.7 log4j log4j 1.2.17

详细代码邮箱联系chengminjiea@163.com

    推荐阅读