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