若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

生活中,最使人疲惫的往往不是道路的遥远,而是心中的郁闷;最使人痛苦的往往不是生活的不幸,而是希望的破灭;最使人颓废的往往不是前途的坎坷,而是自信的丧失;最使人绝望的往往不是挫折的打击,而是心灵的死亡。所以我们要有自己的梦想,让梦想的星光指引着我们走出落漠,走出惆怅,带着我们走进自己的理想。

导读:本篇文章讲解 若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

场景

若依(基于SpringBoot的权限管理系统)的快速搭建:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/111030441

MobileIMSDK怎样将Java服务端运行起来以及打成jar包运行:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/110128757

上面讲过怎样单独将若依管理系统和MobileIMSDK的服务端单独运行起来。

MobileIMSDK除了可以作为Java Application单独运行起来,还可以作为Web工程里作为子项目运行。

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

放在Web工程中运行的原理是,在一个SpringBoot项目启动后运行MobileIMSDK的启动类ServerLaunchImpl

的startup方法。

这样就能在启动SpringBoot项目的同时将MobileIMSDK的服务启动,同时还可以使用SpringBoot去扩展其他的服务,比如语音消息的实现。

首先将MobileIMSDK的项目下载下来之后

IM服务端的代码的位置在demo_src下的MobileIMSDKServerDemo下

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

主要是有这三个类,ServerLaunchImpl是其启动类。

然后核心业务都在其lib下的sdk的jar包中

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

这里核心sdk的源码位置在sdk_src下

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

所以需要将服务端以及sdk的依赖添加到若依项目中,并且将sdk的源码添加进来。根据sdk的lib下所需要的jar有

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

所以在搭建好若依项目后打开,暂且将im的服务放在ruoyi-admin模块下,打开ruoyi-admin下的pom.xml

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

根据上面需要的jar包添加如下maven依赖

        <!--im驱动包-->
        <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.netty/netty-all -->
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.50.Final</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.9.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.21</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.21</version>
        </dependency>

添加完依赖之后,我们在ruoyi-admin下的包路径下新建imserver包,存放im相关的业务。

然后再新建sdk包,用来存放MobileIMSDK的sdk的源码

然后再新建config包,用来设置SpringBoot应用启动后启动IM的启动类

然后将IM的服务端的三个类复制过来

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

注意修改这三个类中import的路径问题,都要重新修改。

然后将MobileIMSDK的sdk_src源码下的server下的所有包和类全部复制到若依项目下sdk包下

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

然后打开sdk下的每一个类和接口,将原来的路径下的import全部去掉,然后重新导入为自己的路径

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

然后在imserver包下新建config包,包下新建类ChatServerRunner类

使其实现SpringBoot的CommandLineRunner接口并实现其run方法

那么run方法再SpringBoot服务启动后就会自动被调用

修改其代码为

package com.ruoyi.web.imserver.config;

import com.ruoyi.web.imserver.ServerLauncherImpl;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * <p> 启动MobileIMSDK服务端 </p>
 *
 * @author :
 * @description : run方法在SpringBoot服务启动之后会自动被调用
 * @date :
 */

@Component
@Order(value = 1)
public class ChatServerRunner implements CommandLineRunner {

    @Override
    public void run(String... strings) throws Exception {

        // 实例化后记得startup哦,单独startup()的目的是让调用者可以延迟决定何时真正启动IM服务
        final ServerLauncherImpl sli = new ServerLauncherImpl();
        // 启动MobileIMSDK服务端的Demo
        sli.startup();

        // 加一个钩子,确保在JVM退出时释放netty的资源
        Runtime.getRuntime().addShutdownHook(new Thread(sli::shutdown));
    }

}

然后找到ruoyi-admin下的启动类RuoYiApplication运行,运行成功后

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

就会发现将IM的服务也启动成功了。

为了验证可以使用官方的Java客户端去连接进行验证

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

就可以连接到我本地的im服务了

 

若依(基于SpringBoot的权限管理系统)集成MobileIMSDK实现IM服务端的搭建

连接成功后发送消息效果,至此整合成功。

示例代码下载:

https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/13632140

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/136452.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!