极光开发者文档:https://docs.jiguang.cn//jmessage/guideline/jmessage_guide/
项目需求:开发java项目的过程中用websocket,由于websocket在负载等各方面的影响考虑使用第三方通讯框架集成到项目里。
【即时通讯使用|极光通讯用于java web即时通信---构建idea下maven+springboot第三方即时通讯】了解极光通讯(极光 IM Web SDK + 极光 JMessage Java SDK)原理
文章图片
实现思路:通过在web端注册用户,同时把server端用户设置为管理员用户admin,通过Java server 的sendMeaasge()实现admin向其他用户发送消息。实现后台向前端的消息推送的目的。同时可以利用极光提供的群聊天、聊天室的原理实现多个消息推送。
极光 IM Web SDK配置
下载SDK Web源码,进行初始化:
文章图片
初始化重点是当前时间戳(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
推荐阅读
- 云原生|云上机器CLOSE_WAIT过多的原因和解决办法
- java|软件架构设计的核心(抽象与模型、“战略编程”)
- 编程语言|编程语言(类型系统的本质)
- Java项目|学习【瑞吉外卖⑥】SpringBoot单体项目_手机验证码登录业务开发
- springboot|springboot中实现短信验证(从零开始、腾讯云)
- 网络|万字长文详解Istio
- javaweb|计算机毕业设计之java+ssm的图书借阅系统
- java|[转载]为什么我认为每个程序员都应该用Mac OS X()
- Java|10年阿里开发架构师经验分享,2022最新Java面试真题解析