server

Project Url: wildfirechat/server
Introduction: 开源免费的即时通讯软件,功能和 UI 符合国内习惯,比 XMPP 具有更适合移动端的协议,可以作为 IM 组件代替环信、融云、网易云信等云通讯和 XMPP
More: Author   ReportBugs   OfficialWebsite   
Tags:

野火 IM 是专业级的即时通讯和实时音视频整体解决方案,由北京野火无限网络科技有限公司维护和支持。

功能特性

  • 极致地硬件利用率,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 和论坛回复。

野火开源项目

主要包括以下项目:

GitHub 仓库 码云仓库 说明
im-server im-server 野火社区版 IM 服务,野火 IM 的核心服务,处理所有 IM 相关业务。
app-server app-server Demo 应用服务,模拟客户的应用服登陆处理逻辑及部分二次开发示例。
robot_server robot_server 机器人服务,演示野火机器人对接其它系统的方法。
push_server push_server 推送服务器,可以对接所有的系统厂商推送服务或者第三方推送服务。
wf-minio wf-minio 私有对象存储服务,用来支持野火 IM 专业版的文件存储。
wf-janus wf-janus 高级音视频媒体服务。
open-platform open-platform 野火开放平台服务。
daily-report daily-report 野火开放平台日报 demo 服务。
channel-platform channel-platform 野火频道(公众号)平台服务。
organization-platform organization-platform 野火组织通讯录服务。
android-chat android-chat 野火 IM Android SDK 源码和 App 源码。
ios-chat ios-chat 野火 IM iOS SDK 源码和 App 源码。
pc-chat pc-chat 基于Electron的 PC 端,支持 Windows、Mac、Linux(包括国产化 linux 系统和 CPU)。
web-chat web-chat 野火 IM Web 端, 体验地址
wx-chat wx-chat 小程序平台的 Demo(支持微信、百度、阿里、字节、QQ 等小程序平台)。
uni-chat uni-chat UniApp 平台移动端应用(使用原生插件)。
uni-wfc-client uni-wfc-client UniApp 平台原生插件。已商店上架
wfc_flutter_plugins flutter_imclient Flutter 平台原生插件,支持 IM 和音视频通话。
docs docs 野火 IM 相关文档,包含设计、概念、开发、使用说明,在线查看

野火开发文档

在线文档

野火 IM 论坛

野火 IM 论坛

野火性能测试报告及测试方法

Github, 码云

野火 Demo

请使用微信扫码下载安装体验野火 IM 移动客户端

野火 IM

Web 客户端点击这里

PC 客户端点这里下载安装。

小程序客户端请用微信扫码

野火 IM

快速开始

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

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

联系我们

商务合作请微信联系:

  • 微信 1:wildfirechat
  • 微信 2:wfchat

问题交流

  1. 如果大家发现 bug,请在 GitHub 或码云提 issue;如果有需求也请给我们提 issue。
  2. 其他问题,请到野火 IM 论坛进行交流学习
  3. 关注我们的公众号。我们有新版本发布或者有重大更新会通过公众号通知大家,另外我们也会不定期的发布一些关于野火 IM 的技术介绍。

我们有核心研发工程师轮流值班处理 issue 和论坛,会及时处理的,疑难 Bug 的修改和新需求的开发我们也会尽快解决。

编译

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,如果是升级服务,请注意更新启动脚本。

维护说明

野火设计理念当中,IM 服务和客户端协议栈构成个管道工具,数据在人和人或者人和服务或者服务和服务之间传递,可以通过 Server API 和自定义消息来对接和开发业务。业务系统把 IM 系统当作一个工具来使用,是不需要把任何业务逻辑写在 IM 服务中的。

如果修改了 IM 服务可能会引起跟客户端协议栈的不兼容,以后也没有可能从社区版 IM 服务迁移到专业版 IM 服务,还有一旦修改就跟我们代码不一样了,如果出了问题我们就无法分析和解决。所以 我们强烈不推荐在 IM 服务修改代码,如果修改过就不再提供任何技术支持和服务了。除了 IM 服务以外的所有代码可以任意修改。

现有接口足够对接和二开任何业务了,如果发现无法实现你们的业务需求,可以在论坛来咨询,我们会分析如何实现,如果需要添加新接口,我们会及时免费添加。请切记:不要修改 IM 服务的代码! 不要修改 IM 服务的代码! 不要修改 IM 服务的代码!

详细维护说明请参考 野火维护说明

服务对象

因为野火的使用范围比较广,难免被一些不法分子利用,国内反诈反赌力度很大,所以国内多地警方都跟我们都有过联系。为了预防我们的产品被用于非法目的,试用及购买只能支持境内法人单位,不接受个人或者境外团体。如果我们发现产品被用于非法目的,我们会立即停止技术支持服务并且报警和配合警方调查。请用于非法目的用户绕行!

应用截图

登录界面

会话列表

好友列表

工作台

发现

我的页面

消息聊天

动态表情

语音消息

位置消息

拍摄图片或者小视频

会话设置

朋友圈

新好友

多人视频通话

会议主页

会议详情

会议界面

PC 客户端界面

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

小程序客户端

公众号管理后台

开放平台管理后台

IM 服务管理后台

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

特别感谢

  1. moquette 本项目是基于此项目二次开发而来,处理 MQTT 相关业务。
  2. loServer 本项目使用 loServer 处理 HTTP 相关业务。

对他们表示诚挚的感谢🙏

License

  1. Under the Creative Commons Attribution-NoDerivs 3.0 Unported license. See the LICENSE file for details.
Apps
About Me
GitHub: Trinea
Facebook: Dev Tools