「开源」全平台兼容、易于二次开发的即时通讯和实时音视频解决方案

发表时间: 2022-11-26 23:48

一飞开源,介绍创意、新奇、有趣、实用的免费开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

野火IM(wildfirechat)是一套全平台、功能齐全、二开友好的即时通讯和实时音视频解决方案

野火IM是一套通用的即时通讯和实时音视频组件,能够更加容易地赋予客户IM和RTC能力,使客户可以快速的在自有产品上添加聊天和通话功能或者直接使用野火提供的应用。使用野火可以替代云通讯产品或减少自研即时通讯和实时音视频的工作量,降低客户研发成本和难度。

二、开源协议

  1. Under the Creative Commons Attribution-NoDerivs 3.0 Unported license. See the LICENSE file for details.

三、界面展示

应用截图

登录界面

会话列表

好友列表

工作台

发现

我的页面

消息聊天

动态表情

语音消息

位置消息

拍摄图片或者小视频

会话设置

朋友圈

新好友

多人视频通话

会议主页

会议详情

会议界面

PC客户端界面

移动客户端、PC客户端和Web客户端三端同框

小程序客户端

公众号管理后台

开放平台管理后台

IM服务管理后台

更多详细信息请下载demo进行体验。

四、功能概述

功能特性

  • 极致地硬件利用率,IM服务最低128M内存即可运行,上不封顶。
  • 协议先进,采用MQTT+Protobuf组合,流量和性能极致优化。
  • 性能强大,专业版IM服务支持百万在线和集群部署,业内顶尖性能水平,详情参考野火性能报告。
  • 部署运维简单,依赖服务少,稍加配置一键启动。
  • 安全加密。网络连接AES加密。客户端数据库SqlCipher加密。安全无小事。
  • 全平台客户端,支持Android、iOS、Web、小程序、UniApp、Flutter、Windows、Mac OS、Linux等所有常见平台。
  • 四端同时在线(移动端,pc端,web端和小程序端),数据和状态多端完美同步。
  • 支持国产化。支持国产化操作系统、国产化芯片和国产操作系统。支持国密加密。
  • 客户端使用微信mars连接库,野火IM可能是最适应中国网络国情的即时通讯服务。
  • 支持加速点加速,即可用于全球应用,也可用于政企内外双网复杂的网络环境。
  • 支持阅读回执和在线状态功能,适用于办公环境。
  • 音视频多种解决方案,丰俭由人,可自由选择。
  • 高级音视频功能强大,支持9人以上的群组视频通话,支持1080P视频,支持会议模式,支持百人以上会议,支持服务器端录制。
  • 全私有部署,可不依赖任何第三方服务,完全内网部署。
  • 功能齐全,涵盖所有常见即时通讯功能。另外具有强大的可扩展能力。代码开源率高,二次开发简单。
  • 结构设计合理,客户端分功能库、UI库和应用三层。应用成熟完善,开箱即用,也可把SDK嵌入其它应用。
  • 拥有应用开放平台,可以开发和创建自建应用,扩展您的工作台。
  • API丰富,方便与其它服务系统的对接。
  • 拥有机器人和公众号功能。
  • 社区版IM服务和移动端免费商用,可以免费构建出完备的移动互联网应用。
  • 收费项目非常便宜,野火独有的试用模式,可以先部署到客户环境试用6个月,试用满意后再购买,避免上当受骗。
  • 技术支持专业和高效,核心研发人员及时处理issue和论坛回复。

野火开源项目

主要包括以下项目:

仓库

说明

im-server

野火社区版IM服务,野火IM的核心服务,处理所有IM相关业务。

app-server

Demo应用服务,模拟客户的应用服登陆处理逻辑及部分二次开发示例。

robot_server

机器人服务,演示野火机器人对接其它系统的方法。

push_server

推送服务器,可以对接所有的系统厂商推送服务或者第三方推送服务。

wf-minio

私有对象存储服务,用来支持野火IM专业版的文件存储。

wf-janus

高级音视频媒体服务。

open-platform

野火开放平台服务。

daily-report

野火开放平台日报 demo服务。

channel-platform

野火频道(公众号)平台服务。

android-chat

野火IM Android SDK源码和App源码。

ios-chat

野火IM iOS SDK源码和App源码。

pc-chat

基于Electron的PC 端,支持Windows、Mac、Linux(包括国产化linux系统和CPU)。

web-chat

野火IM Web 端, 体验地址。

wx-chat

小程序平台的Demo(支持微信、百度、阿里、字节、QQ 等小程序平台)。

uni-chat

UniApp平台移动端应用(使用原生插件)。

uni-wfc-client

UniApp平台原生插件。已商店上架

flutter_imclient

Flutter平台原生插件。

docs

野火IM相关文档,包含设计、概念、开发、使用说明,在线查看。

五、技术选型

快速使用

可以按照快速开始来部署应用服务和IM服务,然后打包移动端,就可以完成聊天和通话功能。

之后再部署开放平台服务、频道(公众号)服务、机器人服务、推送服务、Turn服务(音视频服务)来实现完整的应用功能,详情可以详细阅读文档。

编译

mvn clean package

生成的目标文件在./distribution/target/distribution-xxxx-bundle-tar.tar.gz

配置

解压distribution-xxxx-bundle-tar.tar.gz,修改解压出来的config目录下的wildfirechat.conf,可以阅读配置文件注释和文档,对其它配置项进行调整。

运行

在解压distribution-xxxx-bundle-tar.tar.gz后的目录下运行如下命令:

./bin/wildfirechat.sh

验证

  1. 在浏览器中输入地址 http://${ip}/api/version可以看到返回一个json文件。
  2. 部署应用服务,配置和编译Android客户端和iOS客户端进行验证。详情可参考快速开始。

打包RPM格式

打包会生成Java包和deb安装包,如果需要rpm安装包,请在distribution/pom.xml中取消注释生成rpm包的plugin。另外还需要本地安装有rpm,在linux或者mac系统中很容易安装,在windows系统需要安装cygwin并安装rpm,具体信息请百度查询。

修改之后运行编译命令mvn clean package,rpm包生成在distribution/target目录下。

升级说明

  1. 从0.42 版本增加了群成员数限制,默认为2000。如果您从之前的版本升级到这个版本或以后,需要注意到群成员数的限制。升级之后超出限制的群不受影响,但不能继续加人,如果您想修改默认值,可以在升级版本之后,修改t_setting表,把默认的大小改为您期望的人数。另外修改t_group表,把已经存在的群组max_member_count改成您期望的,然后重启。
  2. 0.50版本添加了是否允许客户端发送群操作通知的配置。如果您在客户端自定义群通知,需要在服务器端配置允许,没有使用自定义群操作通知的不受影响。***
  3. 0.46和0.47版本升级到0.48及以后版本时,可能会提示flyway migrate 38错误,请执行 修复脚本 进行修复。0.46和0.47版本之外的版本不会出现此问题。
  4. 从0.54之前版本升级到0.54及以后版本时,会提示flyway migrate错误。因为0.54版本删除了sql脚本中默认敏感词的内容,flyway checksum失败。请执行update flyway_schema_history set checksum = 0 where script = 'V17__add_default_sensitive_word.sql';来修复。
  5. 从0.59之前的版本升级到之后的版本执行数据库升级时间比较长,请耐心等待提示运行成功,避免中途中断。
  6. 0.62/0.63 版本有严重的问题,请使用0.64及以后版本,或者0.61版。
  7. 从0.68 版本起添加了pc在线是否默认手机接收推送的开关,默认为开,与以前版本作用相反,请注意兼容(可以关掉与之前保持一致或者升级客户端)
  8. 从0.78 版本起把MySQL数据库中关键字都改为大小写敏感,另外生成id的方法也做了改变,只生成小写的id,避免出现id重复的问题,建议所有客户都升级
  9. 从0.79 版本起把log4j升级到log4j2,因为log4j已经不再维护而且还有已知的漏洞,建议所有客户都升级,升级时注意更新log4j2的配置文件
  10. 0.97版本更改了启动脚本wildfirechat.sh,如果是升级服务,请注意更新启动脚本。

六、源码地址

访问一飞开源:https://code.exmay.com/