[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-73239":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":35,"discoverSource":36},73239,"im-server","juggleim\u002Fim-server","juggleim","A high-performance IM server.","https:\u002F\u002Fwww.juggle.im",null,"Go",3575,361,240,3,0,2,41,6,29.68,"Apache License 2.0",false,"master",true,[26,27,28,29,30,31],"chat","golang","im","imserver","messenger","sdk","2026-06-12 02:03:10","# JuggleIM\n\n一个高性能，可扩展的开源 IM 即时通讯系统。\n\n\u003Cp align=\"center\">\n\u003Cimg align=\"left\" height=\"110\" src=\".\u002Fdocs\u002Flogo.png\">\n\u003Cul>\n\u003Cli>\u003Cstrong>官网\u003C\u002Fstrong>: https:\u002F\u002Fwww.juggle.im\u003C\u002Fli>\n\u003Cli>\u003Cstrong>提问\u003C\u002Fstrong>: https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fim-server\u002Fissues\u003C\u002Fli>\n\u003Cli>\u003Cstrong>文档\u003C\u002Fstrong>: https:\u002F\u002Fwww.juggle.im\u002Fdocs\u002Fguide\u002Fintro\u002F\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fp>\n\n[![](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fjuggleim\u002Fim-server?color=yellow&style=flat-square)](.\u002FLICENSE)\n[![](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgo-%3E%3D1.20-30dff3?style=flat-square&logo=go)](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fim-server)\n\n## 社群讨论\n\n如果对 IM 感兴趣、有集成问题讨论的朋友，非常欢迎加入社群讨论～\n\n[Telegram 中文群](https:\u002F\u002Ft.me\u002Fjuggleim_zh)\n\n## 特性\n\n* 灵活的部署模式，支持公有云，私有云，托管云等部署形态。\n* Protobuf+Websocket 实现长连接，低流量，高性能，且在网络不佳的环境下具备较好的连通性。\n* 性能强大，专业版支持集群部署，无限横向扩展，能支撑亿级日活应用。\n* 协议及数据全链路加密，无数据泄露风险。\n* 提供方便的运维工具和管理后台，简单好维护。\n* 支持Android，iOS，Web，PC 等多平台 SDK，提供快捷集成的Demo和文档。\n* 支持多端同时在线和消息多端同步，确保状态多端一致。\n* 支持全球链路加速，可服务全球级应用。\n* 提供丰富的API和WebHook，可方便的与现有系统集成。\n* 支持万人，十万人大群，轻松沟通，不丢消息。\n* 支持无上限直播聊天室。\n* 具备 AI 机器人对接能力，可轻松对接大模型。\n\n## JuggleIM 项目说明\n\n对接文档：[https:\u002F\u002Fjuggle.im\u002Fdocs\u002Fclient\u002Fimport](https:\u002F\u002Fjuggle.im\u002Fdocs\u002Fclient\u002Fimport\u002F)\n\n|  仓库地址 | 说明 |\n| :--------- | :----- |\n| [im-server](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fim-server\u002F) | 底层 IM 核心服务，负责消息分发，存储等IM相关业务 |\n| [jugglechat-server](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fjugglechat-server) | Demo的业务服务，负责处理用户注册\u002F登录，创建群组，添加好友等业务，可以在这个基础上二开自己特色的业务能力 |\n| [jugglechat-server-java](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fjugglechat-server-java)| Demo 业务服务的 Java 版本 | \n| [imserver-console](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fimserver-console) | IM 服务的管理后台，用于操作IM相关配置，监控IM业务量 |\n| [imsdk-android](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fimsdk-android) | 安卓端 imsdk，内含一个 UI Demo，可用于二开 |\n| [imsdk-ios](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fimsdk-ios) | iOS 端 imsdk，内含一个 UI Demo，可用于二开|\n| [imsdk-web](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fimsdk-web) | web 端 imsdk |\n| imsdk-pc | 桌面端 imsdk，暂未开源，可联系客服了解 |\n| [imsdk-flutter](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fimsdk-flutter)| imsdk 的 flutter 版本 |\n| [imsdk-harmony](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fimsdk-harmony) | 鸿蒙版本 imsdk，内含一个 UI Demo，可用于二开 |\n| [jugglechat-web](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fjugglechat-web) | 集成 imsdk-web 的 web 版 Demo，可用于二开 |\n| [jugglechat-desktop](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fjugglechat-desktop) | 集成 imsdk-pc 的桌面版 Demo，可用于二开 |\n| [jugglelive-web](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fjugglelive-web)| 集成 imsdk-web 的一个聊天室场景Demo，可用于二开 |\n\n其他：\n| 仓库地址 | 说明 |\n| :------ | :----- |\n| [bot-connector](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fbot-connector) | 机器人对接服务，用于打通 im-server 和 三方机器人 | \n| [imserver-sdk-go](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fimserver-sdk-go) | 封装 im-server 服务端 API 的 SDK，供业务方集成到自己业务系统中 |\n| [imserver-sdk-java](https:\u002F\u002Fgithub.com\u002Fjuggleim\u002Fimserver-sdk-java) | imserver-sdk 的 java 版本|\n\n\n\n## 快速部署体验\n\n部署文档(https:\u002F\u002Fwww.juggle.im\u002Fdocs\u002Fguide\u002Fdeploy\u002Fquickdeploy\u002F)\n\n## 手动部署\n\n### 1. 安装并初始化 MySQL\n\n#### 1) 安装 MySQL\n略\n\n#### 2) 创建DB实例\n```\nCREATE SCHEMA `jim_db` ;\n```\n\n#### 3) 初始化表结构\n初始化表结构的sql文件在  im-server\u002Fdocs\u002Fjim.sql , 导入命令如下：\n```\nmysql -u{db_user} -p{db_password} jim_db \u003C jim.sql\n```\n\n### 2. 安装MongoDB(可选)\n略\n\n### 3. 启动im-server\n\n#### 1) 运行目录\n运行目录为 im-server\u002Flauncher，其中 conf 目录下存放的是配置文件，logs目录下是服务的运行日志目录。\n\n#### 2) 编辑配置文件\n\n配置文件位置：im-server\u002Flauncher\u002Fconf\u002Fconfig.yml\n```\ndefaultPort: 9003       # im-server 默认监听端口\nnodeName: testNode      # im-server 的节点名称\nnodeHost: 127.0.0.1     # im-server 的节点IP\nmsgStoreEngine: mysql   # 配置用什么存储来存消息数据，有两种存储引擎可选。mysql：使用mysql存储消息数据(默认)；mongo：使用MongoDB存储消息数据\n\nlog:\n  logPath: .\u002Flogs       # 运行日志所在目录\n  logName: jim-info     # 运行日志的前缀名\n  visual: false         # 是否开启可视化日志。开启后，会同步将日志数据写入一个 KV 数据库，在管理后台”开发工具->连接排查“处，可界面化查询日志；\n\nmysql:                  # im-server 所用的MySQL相关配置\n  user: root\n  password: 123456\n  address: 127.0.0.1:3306\n  name: im_db\n\n# mongodb:                # im-server 所用的MongoDB相关配置，用于存储消息数据。该配置为可选，在 msgStoreEngine 配置为 \"mongo\" 时生效；\n#   address: 127.0.0.1:27017\n#   name: jim_msgs        # mongodb 表空间名称，im-server启动后，会自动在这个空间下初始化collection；\n\n# apiGateway:             # im-server 的服务端 API 端口, 供业务APP的服务端调用；非必填项，默认复用 defaultPort 作为默认端口\n#   httpPort: 9001\n\n# connectManager:         # im-server 长连接端口；非必填项，默认复用 defaultPort 作为默认端口\n#   wsPort: 9003\n\nadminGateway:           # im-server 自带的管理后台地址，默认账号密码是：admin\u002F123456\n  httpPort: 8090\n```\n\n#### 3) 启动im-server\n\n在 im-server\u002Flauncher 目录下，执行如下命令：\n```\ngo run main.go\n```\n\n#### 4) 配置外网访问地址(域名\u002FIP)\n\n需要配置外网地址的端口列表：\n| 端口 | 协议类型 | 说明 | \n| ----:|:-----:|:----|\n| 9003| http | 服务端 API 服务监听端口，用于业务服务器，例如 jugglechat-server 配置文件中需要配置这个地址；|\n| 9003| websocket | IM 长连接监听端口，用于客户端SDK与IM 服务建立长连接(websocket) |\n| 8090| http | IM 服务的管理后台监听端口，默认账号和密码：admin\u002F123456 |\n\n配置外网地址的方法，这里不详细描述，大家可以根据自身环境来灵活配置(常用方式: 挂公网ip，nginx反向代理，负载均衡等).\n\n注： 如果仅内网调试使用，可以不配置外网IP\u002F域名，仅使用内网IP即可\n\n#### 5) 将长连接地址配置到IM系统中\n\n配置方式很简单，在数据库中插入一条配置数据即可：\n\n```\ninsert into globalconfs (conf_key, conf_value)values('connect_address', '{\"default\":[\"127.0.0.1:9002\"]}')\n```\n其中，将 127.0.0.1 替换成该机器的内网IP，或对外的公网IP\u002F域名，这个是客户端SDK的长连接地址，将有导航服务(8081)下发给客户端SDK；\n\n### 4. 创建应用(租户)\nJuggleIM 本身是一套多租户的系统，可以在一套服务中创建多个appkey(租户)，租户之间的数据相互隔离，互不影响。\n\n#### 方式一：登录管理后台，创建租户\n待完善\n\n#### 方式二：通过管理API，创建租户\n\n其中，app_key 用于指定租户的标识，可自定义，要求在系统内唯一；app_name为租户的名称，可自定义； \n注：这里用的是IM服务管理后台(8090)的地址，127.0.0.1 替换成im服务的内网IP，或公网IP\u002F域名。\n\n```\ncurl --request POST \\\n  --url http:\u002F\u002F127.0.0.1:8090\u002Fadmingateway\u002Fapps\u002Fcreate \\\n  --data '{\n    \"app_key\":\"appkey\",\n    \"app_name\":\"appname\"\n}'\n```\n\n响应数据示例：\n\n```\n{\n\t\"code\": 0,\n\t\"msg\": \"success\",\n\t\"data\": {\n\t\t\"app_name\": \"appname\",\n\t\t\"app_key\": \"appkey\",\n\t\t\"app_secret\": \"hciKcc6sXRDjYUQp\"\n\t}\n}\n```\n### 5. 登入管理后台\n\n管理后台地址：http:\u002F\u002F127.0.0.1:8090    默认账号\u002F密码： admin\u002F123456\n\n登入管理后台后，即可看到创建的应用列表，点击其中一个应用，可以对其配置进行修改和维护。\n\n### 6. 业务服务器\u002F客户端集成\n\n这里汇总下业务集成所需的各项配置：\n\n1) 业务服务器集成\n\n| 配置项 | 示例|备注 | \n| ----: |:-----:|:----|\n|IM 服务端 API 地址 |  http:\u002F\u002F127.0.0.1:9003 | 供业务服务器访问IM服务的API接口地址，使用该接口可以注册IM用户，创建群，发送系统消息等，接口文档参考：https:\u002F\u002Fwww.juggle.im\u002Fdocs\u002Fserver\u002Fapi\u002F|\n|app_key | appkey1 |应用的租户标识，在第4步中创建，可自定义，但要保证在系统内唯一 |\n|app_secret| hciKcc6sXRDjYUQp | 应用对应的鉴权秘钥，创建应用时自动生成。如果想自定义的话，确保配置为16位的字符串。注意：确保该秘钥仅在业务服务器端使用，不要泄露到客户端。 |\n\n2) 客户端SDK集成\n\n| 配置项 | 示例|备注 | \n| ----: |:-----:|:----|\n|IM 服务的连接地址| ws:\u002F\u002F127.0.0.1:9003| IM 的连接地址，客户端SDK初始化时需要传入，参考文档：https:\u002F\u002Fwww.juggle.im\u002Fdocs\u002Fclient\u002Fquickstart\u002Fandroid\u002F |\n|app_key|appkey1|应用的租户标识，确保与业务服务器端配置的保持一致。|\n","JuggleIM 是一个高性能、可扩展的开源即时通讯系统。项目采用 Go 语言开发，通过 Protobuf 和 Websocket 实现了低流量消耗和高连通性的长连接机制，并支持全链路数据加密，确保通信安全。其核心功能包括集群部署能力以应对亿级日活用户需求、多平台SDK（涵盖Android、iOS、Web等）及便捷的运维工具。此外，还提供了丰富的API接口、全球链路加速服务以及对大规模聊天室和AI机器人的支持。适用于需要构建稳定可靠即时通讯服务的应用场景，如社交应用、在线教育平台或企业内部沟通工具等。","2026-06-11 03:44:38","high_star"]