全平台开源即时通讯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXT
本文内容由阿里云实名注册用户自发贡献,版权属于原本的作者所有,阿里云开发者社区不拥有其著作权,亦不承担对应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
全平台开源即时通讯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXT
在着手基于MobileIMSDK开发自已的即时通讯应用前,建议以Demo工程为脚手架,快速上手MobileIMSDK!
Demo工程大多数都用在演示SDK的API调用等,它位于SDK完整下载包的如下目录:
如上图目录demo_src/Server/所示,这是一个完整的IDEA工程(含完整的可运行Demo源码)。
如果你只是想看看Demo的话,可以下载编译好的Demo包立即体验:它位于SDK完整下载包的demo_binary/server/目录下。
跟所有Java工程一样引用jar包很简单,如果没试过,请查看:IDEA引入本地jar包的两种方法或自行百度查找资料。
跟所有Java工程一样引用jar包很简单,如果没试过,请查看:Eclipse中导入外部jar包Eclipse下导入外部jar包的3种方式。
* 与客服端的所有数据交互事件在此ServerEventListener子类中实现即可。
* 用户身份验证回调方法定义(即验证客户端连接的合法性,合法就允许正常能信,否则断开).
* 注意:本回调在一种特殊情况下——即用户实际未退出登陆但再次发起来登陆包时,本回调是不会被调用的!
* 根据MobileIMSDK的算法实现,本方法中用户验证通过(即方法返回值=0时)后
*@paramuserId 传递过来的准一id,保证唯一就可以通信,可能是登陆用户名、也可能是任意不重复的id等,具体意义由业务层决定
*@paramtoken 用于身份鉴别和合法性检查的token,它可能是登陆密码,也可能是通过前置单点登陆接口拿到的token等,具体意义由业务层决定
*@paramextra 额外信息字符串。本字段目前为保留字段,供上层应用自行放置需要的内容
*@return0 表示登陆验证通过,否则可以返回用户自已定义的错误码,错误码值应为:=1025的整数
* 用户登录验证成功后的回调方法定义(在业务上可理解为该用户的上线通知).
* 注意:本回调在一种特殊情况下——即用户实际未退出登陆但再次发起来登陆包时,回调也是一定会被调用。
*@paramuserId 传递过来的准一id,保证唯一就可以通信,可能是登陆用户名、也可能是任意不重复的id等,具体意义由业务层决定
*@paramextra 额外信息字符串。本字段目前为保留字段,供上层应用自行放置需要的内容。为了丰富应用层处理的手段,在本回调中也把此字段传进来了
* 收到客户端发送给“服务端”的数据回调通知(即:消息路径为“C2S”的消息)前的处理逻辑。
* b本方法的典型用途/b:开发者可在本方法中实现如:用户聊天内容的鉴黄、过滤、篡改等等,把内容审读权限交给开发者,就看怎么用了。
*@paramsession 消息发送者的“会话”引用(也就是客户端的网络连接对象)
* 收到客户端发送给“其它客户端”的数据回调通知(即:消息路径为“C2C”的消息)前的处理逻辑。
* b本方法的典型用途/b:开发者可在本方法中实现如:用户聊天内容的鉴黄、过滤、篡改等等,把内容审读权限交给开发者,就看怎么用了。
*@paramsession 消息发送者的“会话”引用(也就是客户端的网络连接对象)
* 收到客户端发送给“服务端”的数据回调通知(即:消息路径为“C2S”的消息).
* b本方法的典型用途/b:开发者通常可在本方法中实现如:添加好友请求等需要服务端做处理的业务。
*@returntrue表示本方法已成功处理完成,否则表示未处理成功。此返回值目前框架中并没有特殊意义,仅作保留吧
//【重要】用户定义的消息或指令协议类型(开发者可据此类型来区分具体的消息或指令)
* 收到客户端发送给“其它客户端”的数据回调通知(即:消息路径为“C2C”的消息).
* b注意:/b本方法当且仅当在数据被服务端成功实时发送(“实时”即意味着对方在线的情况下)出去后被回调调用.
* b本方法的典型用途/b:开发者可在本方法中能轻松实现用户聊天信息的收集,以便后期监控分析用户的行为等^_^。
* 开发者可以对本方法不作任何代码实现,也不可能影响整个MobileIMSDK的运行,因为本回调并非关键逻辑,只是个普通消息传输结果的回调而已。
* 提示:如果开启消息QoS保证,因重传机制,本回调中的消息理论上有重复的可能,请以参数 #fingerPrint
//【重要】用户定义的消息或指令协议类型(开发者可据此类型来区分具体的消息或指令)
* 服务端在进行消息发送时,当对方在线但实时发送失败、以及其它很多问题导致消息并没能正常发出时
* b举个例子:以下是一段典型的服务端消息/指令发送代码:/b
* // 消息接收者的id(这个id由你自已定义,对于MobileIMSDK来说只要保证唯一性即可)
* //【1】TODO: 你的消息/指令实时发送失败,在这里实现离线消息处理逻辑!
* font color=#0000ff如上代码所示:“【1】【3】”代码处,开发的人能自行明确地进行离线】”处如
* 果实时发送时出现任意的毛病,将会走本回调办法来进行通知,框架正是通过此回调进一步确保消息可靠性保证的。/font
* 开发者可在本方法中实现离线消息的持久化存储(反正进到本回调通知的消息,就该被离线存储起来的)。
* 发生此种情况的场景可能是:对方确实不在线(那么此方法里就可当作离线消息处理了)、或者在发送时判断对方是在线的
* 但服务端在发送时却没有成功(这种情况就可能是通信错误或对方非正常通出但尚未到达会话超时时限)。bru应用层在
*@returntrue表示应用层已经处理了离线消息(如果该消息有QoS机制,则服务端将代为发送一条伪应答包
* (伪应答仅意味着不是接收方的实时应答,而只是存储到离线DB中,但在发送方看来也算是被对方收到,只是延
* 迟收到而已(离线消息嘛))),否则表示应用层没有处理(如果此消息有QoS机制,则发送方在QoS重传机制超时
//【重要】用户定义的消息或指令协议类型(开发者可据此类型来区分具体的消息或指令)
+,因实时发送没有成功,需要上层应用作离线处理哦,否则此消息将被丢弃.);
* MobileIMSDK的服务端QoS消息送达保证机制的事件实现类。
* TCP理论上能从底层保证数据的可靠性,但应用层的代码和场景中存在网络本身和网络之外的各种不可靠性,
* MobileIMSDK中的QoS送达保证机制,将加强TCP的可靠性,确保消息,无法从哪一个层面和维度,都会给
* 中的Protocal对象是原对象的clone(即原对象的深拷贝),请安心使用哦),应用层
* 可通过指纹特征码找到原消息并可以UI上将其标记为”发送失败“以便即时告之用户
* 2) 对方不在线或者服务端转发过程中出错了,由服务端进行离线存储成功后的反馈
* (此种情况严格来讲不能算是“已被收到”,但对于应用层来说,离线存储了的消息
* 原则上就是已送达了的消息:因为用户下次登陆时肯定能通过HTTP协议取到)。
* 来找到原先已发生的消息并可在UI是将其标记为”已送达“或”已读“以便提升用户体验
* b友情提示:/b其实MobileIMSDK的服务端并非只能以main的主类方式独立启动,你可完全把它放到诸如java的Web工程里作为子模块运行,不会有任何问题!
//设置最大TCP帧内容长度(不设置则默认最大是 6 * 1024字节)
//开启TCP协议的SSL/TLS加密传输(请确保客户端也已开发SSL)
//开启WebSocket协议的SSL/TLS加密传输(请确保SSL证书是正规CA签发,否则浏览器是不允许的)
////私钥密码(注意:Netty只支持.pk8格式,如何生成,见JackJiang文章:)
////生成SslContext对象(为了方便理解,此处使用的是单向认证)
//TODO: 注意:请使用自已的证书,Demo中带的证书为自签名证书且已绑定域名,不安全!!!
//私钥文件(注意:Netty只支持.pk8格式,如何生成,见JackJiang文章:)
//私钥密码(注意:Netty只支持.pk8格式,如何生成,见JackJiang文章:)
/**示例 3:使用Netty自带的自签名证书(建议该证书仅用于测试使用)*/
//实例化后记得startup哦,单独startup()的目的是让调用者可以延迟决定何时真正启动IM服务
请调用以下API进行设置即可(框架默认工作在SenseMode.MODE_15S模式下):
特别说明:为了能够更好的保证算法的一致性,以上设置需所有平台客户端和服务端都保持一致,否则将发生不可预测问题。
(▲ 左边为MobileIMSDK的各平台核心库工程,右边为各平台的Demo演示工程)
核心库工程就是MobileIMSDK的所有框架源码,它只是个lib库,它的作用就像Spring boot、Struts、log4j这些第3库lib库一样:是打成jar包放到您的工程里使用的,您调用它就能实现它提供的功能,它自已本身并不能自已运行(你不可能让log4j或Spring boot能双击就运行吧?)
正如“什么是核心库工程?”一节所说,MobileIMSDK的核心库是不能直接运行的,它需要打成jar包被您的工程引用并调用后,才能发挥它的作用,所以MobileIMSDK的Demo演示工程的目的是为了告诉你:如何引用MobileIMSDK的核心库jar包、如何调用MobileIMSDK的API,读Demo代码就知道怎么使用它了(所以Demo代码唯一的意义就是为您演示库的调用,别无他用)!
为了方便日后的升级,建议使用MobileIMSDK编译好的核心库jar包,当然您也可以直接把MobileIMSDK核心库源库放到您的工程中(而不是使用编译好的jar包)。
能够正常的使用正规CA机构签发的证书,也可以使用自签名证书,如何生成自签名证书可自行百度,这方面资料很丰富。
注:如果你不想买证书,也不知道怎么生成自签名证书,可以跟着这篇文章自已做《手把手教你为基于Netty的IM生成自签名SSL/TLS证书》。
* 将准备好的证书放置到服务端工程的此目录下(以MobileIMSDK的服务端Demo工程为例):
* 启用SSL/TLS后的运行效果(服务端控制台log中出现此字样即表示SSL/TLS启用成功!):
(▲ 服务端启动时控制台下关于已开启TLS/SSL加密的log输出(run.bat运行时))
(▲ 服务端启动时控制台下关于已开启TLS/SSL加密的log输出(IDEA中运行时))
(▲ 客户端发起WebSocket连接时,服务端控制台下带有TLS/SSL信息的握手log)
程序员晚枫近期研究了鸿蒙系统相关概念,最重要的包含 OpenHarmony、HarmonyOS 和 HarmonyOS NEXT。OpenHarmony 是开源项目,适用于物联网设备;HarmonyOS 由华为开发,兼容安卓应用,用于手机和平板等;HarmonyOS NEXT 剔除安卓生态,采用纯鸿蒙技术,专注原生应用开发。三者在技术架构、应用场景和开发工具上各有特点,一同推动鸿蒙ECO的发展。
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发一
本文介绍了方舟开发框架(ArkUI)及其两种开发范式:基于ArkTS的声明式开发范式和类Web开发范式。ArkUI是用于构建HarmonyOS应用界面的UI框架,提供极简UI语法和基础设施。声明式开发范式使用ArkTS语言,以组件、动画和状态管理为核心,适合复杂团队协作;类Web开发范式采用HML、CSS、JavaScript三段式开发,适用于简单界面应用,贴近Web开发者习惯。文中还概述了两者的架构和基础能力,帮助开发者选择正真适合的范式进行高效开发。
【HarmonyOS Next之旅】基于ArkTS开发(二) -> UI开发三
本文介绍了基于声明式UI范式的图形绘制与动画效果实现方法,涵盖绘制图形、添加动画效果及常见组件说明三部分内容。在绘制图形部分,详细讲解了如何通过Circle组件为食物成分表添加圆形标签,以及使用Path组件结合SVG命令绘制自定义图形(如应用Logo)。动画效果部分则展示了如何利用animateTo实现闪屏动画,包括渐出、放大效果,并设置页面跳转;同时介绍了页面间共享元素转场动画的实现方式。最后,文章列举了声明式开发范式中的各类组件及其功能,帮助开发者快速上手构建复杂交互页面。
其实你们可以发现,一篇文章下来,都是基于右键后的Generate选项,所以,还是非常的简单的,当然了,还是希望我们大家,以上的功能,能够应用在实际的开发中,而不是停留在纸面上。
Flex布局(弹性布局)是HarmonyOS Next中最强大的布局方式之一,它提供了一种更高效、灵活的方式来对容器中的子元素进行排列、对齐和分配空间。无论是简单的居中显示,还是复杂的自适应界面,Flex布局都能轻松应对。
本文分享了鸿蒙开发中的五大实用案例,包括页面跳转、列表渲染、网络请求封装、数据持久化和系统能力调用。通过具体代码示例与避坑指南,手把手教你掌握常用功能,助你高效开发。无论是初学者还是进阶开发者,都能从中受益!
UniApp X:鸿蒙原生开发的机会与DCloud的崛起之路·优雅草卓伊凡
UniApp X:鸿蒙原生开发的机会与DCloud的崛起之路·优雅草卓伊凡
首先,我重新编译了插件,进行了上传,你们可以下载最新的安装包进行体验了,还是和以前一样,提供了在线版和IDE插件版,两个选择,最新的版本,除了升级了版本,兼容了最新的DevEco Studio ,还做了一层优化,就是针对嵌套对象和属性的生成,使用方式呢,一年前的文章中有过详细的概述,这里呢也粗略地介绍一下。
旋转门数据压缩算法在PostgreSQL中的实现 - 流式压缩在物联网、监控、传感器等场景的应用
【阿里云IoT+YF3300】1.时代大背景下的阿里云IoT物联网的现状和未来
# Apache Spark系列技术直播# 第八讲 【 微软Azure平台利用Intel Analytics Zoo构建AI客服支持实践 】
,安博体育网页版登录