野火IM是專業級即時通訊和實時音視頻整體解決方案,由北京野火無限網絡科技有限公司維護和支持。
主要特性有:私有部署安全可靠,性能強大,功能齊全,全平台支持,開源率高,部署運維簡單,二次開發友好,方便與第三方系統對接或者嵌入現有系統中。詳細情況請參考在線文檔。
主要包括一下項目:
| GitHub倉庫地址(主站) | 碼雲倉庫地址(鏡像) | 說明 | 備註 |
|---|---|---|---|
| im-server | im-server | IM Server | |
| android-chat | android-chat | 野火IM Android SDK源碼和App源碼 | 可以很方便地進行二次開發,或集成到現有應用當中 |
| ios-chat | ios-chat | 野火IM iOS SDK源碼和App源碼 | 可以很方便地進行二次開發,或集成到現有應用當中 |
| pc-chat | pc-chat | 基於Electron開發的PC 端 | |
| web-chat | web-chat | 野火IM Web 端, 體驗地址 | |
| wx-chat | wx-chat | 小程序平台的Demo(支持微信、百度、阿里、字節、QQ 等小程序平台) | |
| app server | app server | 應用服務端 | |
| robot_server | robot_server | 機器人服務端 | |
| push_server | push_server | 推送服務器 | |
| docs | docs | 野火IM相關文檔,包含設計、概念、開發、使用說明,在線查看 |
作為野火IM的後端應用的演示,本工程具有如下功能:
本工程為Demo工程,實際使用時需要把對應功能移植到您的應用服務中。如果需要直接使用,請按照後面的說明解決掉性能瓶頸問題。
mvn clean package
打包會生成Java包和deb安裝包,如果需要rpm安裝包,請在pom.xml中取消註釋生成rpm包的plugin。另外還需要本地安裝有rpm,在linux或者mac系統中很容易安裝,在windows系統需要安裝cygwin並安裝rpm,具體信息請百度查詢。
修改之後運行編譯命令mvn clean package ,rpm包生成在target目錄下。
應用使用的是騰訊雲短信功能,需要申請到appid/appkey/templateId這三個參數,並配置到tencent_sms.properties中去。用戶也可以自行更換為自己喜歡的短信提供商。在沒有短信供應商的情況下,為了測試可以使用superCode ,設置好後,客戶端可以直接使用superCode進行登陸。上線時一定要注意刪掉superCode 。
本演示服務有4個配置文件在工程的config目錄下,分別是application.properties , im.properties , aliyun_sms.properties和tencent_sms.properties 。請正確配置放到jar包所在的目錄下的config目錄下。
application.properties配置中的sms.verdor決定是使用那個短信服務商,1為騰訊短信,2為阿里雲短信
在target目錄找到app-XXXX.jar ,把jar包和放置配置文件的config目錄放到一起,然後執行下面命令:
java -jar app-XXXXX.jar
本服務最早只提供獲取token功能,後來逐漸增加了群公告/Shiro等功能,需要引入數據庫。為了提高用戶體驗的便利性,引入了數據庫H2,讓用戶可以無需安裝任何軟件就可以直接運行(JRE還是需要的),另外shiro的session也存儲在h2數據庫中。提高了便利性的同時導致一方面性能有瓶頸,另外一方面也不能水平擴展和高可用。因此需要使用本工程上線必須修改2個地方。
application.properties文件中的描述。0.40版本引入了shiro功能,在升級本服務之前,需要確保客戶端已經引入了本工程0.40版本發佈時或之後的移動客戶端。並且在升級之後,客戶端需要退出重新登錄一次以便保存session(退出登錄時調用disconnect,需要使用false值,這樣重新登錄才能保留歷史聊天記錄,一定要在新版本中改成這樣)。如果是舊版本或者沒有重新登錄,群公告和掃碼登錄功能將不可用。為了系統的安全性,建議升級。
0.43版本把Web和PC登錄的短輪詢改為長輪詢,如果應用服務升級需要對Web和PC進行對應修改。
0.45.1 配置文件中添加了wfc.all_client_support_ssl開關,當升級到這個版本或之後時,需要配置文件中添加這個開關。
0.51版本添加了token認證。可以同時支持token和cookies認證,客戶端也做了對應修改,優先使用token。注意做好兼容。
從0.53版本開始,所以數據都存儲在數據庫中,因此應用服務為無狀態服務,可以部署多台應用服務做高可用和水平擴展。需要注意數據都是存儲在數據庫中,如果用戶量較大或者業務量比較大,可以自己二開應用服務,添加redis緩存。
服務中對同一個IP的請求會有限頻,默認是一個ip一小時可以請求200次,可以根據您的實際情況調整(搜索rateLimiter字符串就能找到)。如果使用了nginx做反向代理需要注意把用戶真實ip傳遞過去(使用X-Real-IP或X-Forwarded-For),避免獲取不到真實ip從而影響正常使用。
UNDER MIT LICENSE. 詳情見LICENSE文件
請參考說明使用阿里雲短信