在着手基于MobileIMSDK开发自己的即时通讯应用前,建议以Demo工程为脚手架,快速上手MobileIMSDK!
Demo工程主要用于演示SDK的API调用等,它位于SDK完整下载包的如下目录:
如上图目录demo_src/Server/所示,这是一个完整的IDEA工程(含完整的可运行Demo源码)。
如果你只是想看看Demo的话,可以下载编译好的Demo包立即体验:它位于SDK完整下载包的demo_binary/server/目录下。
最新版打包下载:Github点此进入(Gitee同步托管、Gitcode同步托管),或者前往MobileIMSDK的Github自行同步代码。
跟所有Java工程一样引用jar包很简单,如果没试过,请查看:IDEA引入本地jar包的两种方法或自行百度查找资料。
跟所有Java工程一样引用jar包很简单,如果没试过,请查看:Eclipse中导入外部jar包或Eclipse下导入外部jar包的3种方式。
* 服务端的应用层可在本方法中实现用户登陆验证。 ** 注意:本回调在一种特殊情况下——即用户实际未退出登陆但再次发起来登陆包时,本回调是不会被调用的! *
* 服务端的应用层通常可在本方法中实现用户上线通知等。 ** 注意:本回调在一种特殊情况下——即用户实际未退出登陆但再次发起来登陆包时,回调也是一定会被调用。 * * @param userId 传递过来的准一id,保证唯一就可以通信,可能是登陆用户名、也可能是任意不重复的id等,具体意义由业务层决定 * @param extra 额外信息字符串。本字段目前为保留字段,供上层应用自行放置需要的内容。为了丰富应用层处理的手段,在本回调中也把此字段传进来了 * @param session 此客户端连接对应的 netty “会话” */ @Override public void onUserLoginSucess(String userId, String extra, Channel session) { logger.debug(【IM_回调通知onUserLoginSucess】用户:+userId+ 上线了!); } /** * 用户退出登录回调方法定义(可理解为下线通知回调)。 *
* 本方法的默认实现:当开发者不需要本方法进行额外逻辑处理时,请直接返回true即可! *
* 本方法的默认实现:当开发者不需要本方法进行额外逻辑处理时,请直接返回true即可! *
* MobileIMSDK在收到客户端向userId=0(即接收目标是服务器)的情况下通过 * 本方法的回调通知上层。 *
* 注意:本方法当且仅当在数据被服务端成功实时发送(“实时”即意味着对方在线的情况下)出去后被回调调用. *
* 本方法的典型用途:开发者可在本方法中可以实现用户聊天信息的收集,以便后期监控分析用户的行为等^_^。 * 开发者可以对本方法不作任何代码实现,也不会影响整个MobileIMSDK的运行,因为本回调并非关键逻辑,只是个普通消息传输结果的回调而已。 *
* 注意:本方法当且仅当在数据被服务端在线发送失败后被回调调用. * *
* 本方法的典型用途:* 开发者可在本方法中实现离线消息的持久化存储(反正进到本回调通知的消息,就是应该被离线存储起来的)。 * *
* 当前QoS机制支持全部的C2C、C2S、S2C共3种消息交互场景下的消息送达质量保证:*
1) Client to Server(C2S):即由某客户端主动发起,消息最终接收者是服务端,此模式下:重发由C保证、ACK应答由S发回;2) Server to Client(S2C):即由服务端主动发起,消息最终接收者是某客户端,此模式下:重发由S保证、ACK应答由C发回;2) Client to Client(C2C):即由客户端主动发起,消息最终接收者是另一客户端。此模式对于QoS机制来说,相当于C2S+S2C两程路径。
* 目前,判定消息被对方收到是有两种可能:* 1) 对方确实是在线并且实时收到了;* 2) 对方不在线或者服务端转发过程中出错了,由服务端进行离线存储成功后的反馈 * (此种情况严格来讲不能算是“已被收到”,但对于应用层来说,离线存储了的消息 * 原则上就是已送达了的消息:因为用户下次登陆时肯定能通过HTTP协议取到)。 * * @param theFingerPrint 已被收到的消息的指纹特征码(唯一ID),应用层可据此ID * 来找到原先已发生的消息并可在UI是将其标记为”已送达“或”已读“以便提升用户体验 */ @Override public void messagesBeReceived(String theFingerPrint) { if(theFingerPrint != null) { logger.debug(【DEBUG_QoS_S2C事件】收到对方已收到消息事件的通知,fp=+theFingerPrint); } }}
请调用以下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)
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
取代 Mini LED,消息称苹果明年将推 OLED 版 MacBook Pro 笔记本
苹果 iOS 26 备忘录工具栏选项增至 18 个,可根据情境自适应切换
官方泄露的营销图片从各个角度展示Google Pixel 10 Pro XL
《编码物候》展览开幕 北京时代美术馆以科学艺术解读数字与生物交织的宇宙节律IM电竞,IM电竞官网,IM电竞注册,电竞投注平台,电竞博彩,英雄联盟竞猜