1145

0

Open-IM

从服务端到客户端SDK开源即时通讯(IM)整体解决方案,可以轻松替代第三方IM云服务,打造具备聊天、社交功能的app。

Open-IM-Server:开源即时通讯服务器

即时通讯服务器。纯 Golang 的后端,有线传输协议是基于 websocket 的 JSON。

Open-IM-Server 中的一切都是消息,因此您可以轻松扩展自定义消息,无需修改服务器代码。

使用微服务架构,可以使用集群部署 Open-IM-Server。

通过在客户的服务器上部署Open-IM-Server,开发者可以免费、快速地将即时通讯和实时网络能力集成到自己的应用程序中,保证业务数据的安全和隐私。

特征

  • 免费的一切
  • 可扩展架构
  • 易于集成
  • 良好的可扩展性
  • 高性能
  • 轻的
  • 支持多种协议

社区

快速开始

安装 Open-IM-Server

Open-IM 依赖于五个开源高性能组件:ETCD、MySQL、MongoDB、Redis 和 Kafka。私有化部署 Open-IM-Server 之前,请确保以上五个组件已经安装。如果您的服务器没有上述组件,则必须先安装 Missing 组件。如果你有以上组件,建议直接使用。如果没有,建议使用 Docker-compose,无需安装依赖,一键部署,更快更方便。

源代码部署

  1. 安装Go 环境。确保 Go 版本至少为 1.15。

  2. 将 Open-IM 项目克隆到您的服务器。

    git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
  3. 构建并启动服务。

    1. 授权

      #cd Open-IM-server/script
      
      chmod +x *.sh
    2. 执行构建

      ./build_all_service.sh
    3. 启动服务

      ./start_all.sh
    4. 检查服务

      ./check_all.sh

      OpenIMServersonSystempng

Docker 部署

所有图像都可在https://hub.docker.com/r/lyt1123/open_im_server

  1. 安装 Docker 1.13 或更高版本。

  2. 安装 Docker Compose 1.22 或更高版本。

  3. 将 Open-IM 项目克隆到您的服务器。

    git clone https://github.com/OpenIMSDK/Open-IM-Server.git --recursive
  4. 一键启动docker-compose(Docker自动拉取所有镜像)

    cd Open-IM-Server
    docker-compose up -d
  5. 检查服务

    ./docker_check_service.sh 
    ./check_all.sh

    OpenIMServersondockerpng

配置说明

Open-IM配置分为基础组件配置和业务内部服务配置。开发者在使用产品时需要填写各个组件的地址作为其服务器组件的地址,并保证业务的内部服务端口不被占用

基本组件配置说明

  • ETCD
    • etcd用于rpc服务的发现和注册,etcd Schema是注册名的前缀,建议修改为你的公司名,etcd地址(ip+port)支持集群部署,可以填写多个ETCD地址以逗号分隔,也只有一个 etcd 地址。
  • MySQL
    • mysql 用于完全存储消息和用户关系。暂不支持集群部署。修改地址和用户、密码和数据库名称。
  • Mongo
    • Mongo 用于消息的离线存储。默认存储时间为 7 天。暂时不支持集群部署。只需修改地址和数据库名称。
  • Redis
    • Redis目前主要用于消息序列号存储和用户token信息存储。暂时不支持集群部署。修改对应的redis地址和密码即可。
  • Kafka
    • Kafka作为消息传输存储队列,支持集群部署,修改对应地址即可

内部服务配置说明

  • 凭据&&推送
    • Open-IM需要使用三方离线推送功能。目前使用的是腾讯的三方推送。它支持IOS、Android和OSX推送。该信息是腾讯推送的一些注册信息。开发者需要到腾讯云手机推送注册相应信息。如果不填写相应信息,将无法使用离线消息推送功能
  • api&&rpcport&&longconnsvr&&rpcregistername
    • api端口为http接口,longconnsvr为websocket监听端口,rpcport为内部服务启动端口。两者都支持集群部署。确保未使用这些端口。如果要为单个服务打开多个服务,请填写多个端口,以逗号分隔。rpcregistername是各个服务注册到注册表etcd的服务名,不需要修改
  • 日志&&模块名
    • 日志配置包括日志文件的存储路径,将日志发送到elasticsearch进行日志查看。目前不支持将日志发送到elasticsearch。配置暂时不需要修改。modulename 用于根据服务模块的名称拆分日志。默认配置没问题。
  • 多登录策略&&令牌策略
    • Open-IM 支持多终端登录。目前,多终端登录策略共有三种。PC端和移动端默认同时在线。当多个策略配置为true时,默认使用第一个为true的策略,token策略为生成的token策略。, 开发者可以自定义token的过期时间

脚本说明

Open-IM 脚本提供服务编译、启动和停止脚本。Open-IM脚本启动模块有四个,一个是http+rpc服务启动模块,第二个是websocket服务启动模块,然后是msg_transfer模块,最后一个是push模块

  • path_info.cfg&&style_info.cfg&&functions.sh
    • 包含各个模块的路径信息,包括源码所在路径、服务启动名称、shell打印字体样式、以及一些处理shell字符串的函数
  • build_all_service.sh
    • 编译模块,将Open-IM的所有源代码编译成二进制文件放入bin目录
  • start_rpc_api_service.sh&&msg_gateway_start.sh&&msg_transfer_start.sh&&push_start.sh
    • 独立的脚本启动模块,后面依次是api和rpc模块、消息网关模块、消息传输模块、推送模块
  • start_all.sh&&stop_all.sh
    • 总脚本,启动所有服务,关闭所有服务

流程图

架构

许可

Open-IM-Server 在 Apache 2.0 许可下。有关详细信息,请参阅许可证文件