若依(基於SpringBoot的權限管理系統)集成MobileIMSDK實現IM服務端的搭建


場景

若依(基於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下

 

 

主要是有這三個類,ServerLaunchImpl是其啟動類。

然后核心業務都在其lib下的sdk的jar包中

 

 

這里核心sdk的源碼位置在sdk_src下

所以需要將服務端以及sdk的依賴添加到若依項目中,並且將sdk的源碼添加進來。根據sdk的lib下所需要的jar有

 

 

所以在搭建好若依項目后打開,暫且將im的服務放在ruoyi-admin模塊下,打開ruoyi-admin下的pom.xml

根據上面需要的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的服務端的三個類復制過來

 

 

注意修改這三個類中import的路徑問題,都要重新修改。

然后將MobileIMSDK的sdk_src源碼下的server下的所有包和類全部復制到若依項目下sdk包下

然后打開sdk下的每一個類和接口,將原來的路徑下的import全部去掉,然后重新導入為自己的路徑

 

 

然后在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運行,運行成功后

 

 

就會發現將IM的服務也啟動成功了。

為了驗證可以使用官方的Java客戶端去連接進行驗證

 

 

就可以連接到我本地的im服務了

 

 

連接成功后發送消息效果,至此整合成功。

示例代碼下載:

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM