{"id":15036495,"url":"https://github.com/wukongim/wukongim","last_synced_at":"2025-12-29T03:03:28.436Z","repository":{"id":162924546,"uuid":"638054601","full_name":"WuKongIM/WuKongIM","owner":"WuKongIM","description":"More than just IM 不只是即时通讯( IM )","archived":false,"fork":false,"pushed_at":"2025-04-27T02:19:48.000Z","size":76388,"stargazers_count":4110,"open_issues_count":23,"forks_count":507,"subscribers_count":28,"default_branch":"main","last_synced_at":"2025-04-27T04:54:57.976Z","etag":null,"topics":["chat","customerservice","im","message"],"latest_commit_sha":null,"homepage":"https://githubim.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WuKongIM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-05-09T01:46:51.000Z","updated_at":"2025-04-27T02:19:51.000Z","dependencies_parsed_at":"2023-07-01T20:45:58.698Z","dependency_job_id":"b92993b1-1289-47eb-9a6d-3ae1d9b29a2b","html_url":"https://github.com/WuKongIM/WuKongIM","commit_stats":null,"previous_names":[],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WuKongIM%2FWuKongIM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WuKongIM%2FWuKongIM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WuKongIM%2FWuKongIM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WuKongIM%2FWuKongIM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WuKongIM","download_url":"https://codeload.github.com/WuKongIM/WuKongIM/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251089620,"owners_count":21534523,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","customerservice","im","message"],"created_at":"2024-09-24T20:31:20.698Z","updated_at":"2025-12-29T03:03:28.431Z","avatar_url":"https://github.com/WuKongIM.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"##  WuKongIM (Making Communication Simpler)\n\nA high-performance universal communication service, refined over 10 years (2015-2025). Supports instant messaging, in-app/system notifications, messaging middleware, IoT communication, audio/video signaling, live streaming comments, customer service systems, AI communication, instant communities, and more.\n\n\n`This project requires Go 1.20.0 or higher to compile`\n\n`Windows is no longer supported`\n\n\n\nKey Features of Distributed IM: Automatic failover, decentralized design, data redundancy between nodes, fast auto-scaling, proxy node mechanism\n\nTechnical Highlights: Custom protocol, Distributed Raft (modified pull mode), Multi-group Raft (modified pull mode), Relational database internals, Distributed database design, Reactors architecture, Innovative multi-layer distributed leadership mechanism, and more\n\n\n[中文](./README_CN.md)\n\n\u003cp align=\"center\"\u003e\n\u003cimg align=\"left\" height=\"160\" src=\"./docs/logo.png\"\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eWebsite\u003c/strong\u003e: https://githubim.com\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eProtocol 1\u003c/strong\u003e: \u003ca href=\"https://githubim.com/server/advance/proto.html\"\u003eWuKongIM Binary Protocol\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eProtocol 2\u003c/strong\u003e: \u003ca href=\"https://githubim.com/server/advance/jsonrpc.html\"\u003eWuKongIM JSON Protocol (WebSocket only)\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eIssues\u003c/strong\u003e: https://github.com/WuKongIM/WuKongIM/issues\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eDocumentation\u003c/strong\u003e: https://githubim.com\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eArchitecture Docs\u003c/strong\u003e: https://deepwiki.com/WuKongIM/WuKongIM\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/p\u003e\n\n[![](https://img.shields.io/github/license/WuKongIM/WuKongIM?color=yellow\u0026style=flat-square)](./LICENSE)\n[![](https://img.shields.io/badge/go-%3E%3D1.20-30dff3?style=flat-square\u0026logo=go)](https://github.com/WuKongIM/WuKongIM)\n[![](https://img.shields.io/badge/go%20report-A+-brightgreen.svg?style=flat)](https://goreportcard.com/report/github.com/WuKongIM/WuKongIM)\n\u003ca href=\"https://join.slack.com/t/wukongim/shared_invite/zt-22o7we8on-2iKNUmgigB9ERdF9XUivmw\"\u003e\u003cimg src=\"https://img.shields.io/badge/Slack-99%2B-blueviolet?logo=slack\u0026amp;logoColor=white\"\u003e\u003c/a\u003e\n\nArchitecture\n--------\n\n![Architecture](./docs/architecture_v2_en.svg)\n\n![Cluster Architecture](./docs/architecture/cluster_v2_en.svg)\n\n\nVideo Demonstrations\n--------\n\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth style=\"text-align: center;\"\u003eFailover Demo\u003c/th\u003e\n      \u003cth style=\"text-align: center;\"\u003eAI Demo\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd style=\"text-align: center;\"\u003e\n        \u003cimg src=\"./docs/architecture/cluster-failover.webp\" alt=\"Failover\"\u003e\n      \u003c/td\u003e\n      \u003ctd style=\"text-align: center;\"\u003e\n         \u003cimg src=\"./docs/video/stream.webp\" alt=\"AI + Streaming\"\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\n\n\nLive Demo\n--------\n\n**Chat Demo**\n\nWeb chat demo: http://imdemo.githubim.com\n\nBackend monitoring demo: http://monitor.githubim.com/web\n\nStress test report: https://githubim.com/server/advance/stressSingleReport.html\n\n\nHighlights\n--------\n\nThe only `decentralized` distributed IM in open source\n\nThe only IM capable of `200,000+` concurrent sends on a single machine in open source\n\nThe only IM with built-in self-developed distributed storage in open source\n\nThe only distributed IM that doesn't depend on any middleware in open source\n\nFeatures\n--------\n\n🎦 **Uniqueness**\n\nNo limit on group members, easily supports 100,000-member group chats, messages can be stored permanently.\n\n📚 **Low Resource Consumption**\n\nSelf-developed binary protocol, heartbeat packets are only 1 byte, saves bandwidth and battery, faster transmission.\n\n🔐 **Security**\n\nEnd-to-end encryption for message channels and content, prevents man-in-the-middle attacks and message tampering, real-time server data backup, no data loss.\n\n\n🚀 **Performance**\n\nBuilt on PebbleDB KV database, we developed a specialized distributed database for IM services, eliminating performance overhead from generic databases. Fast storage means fast messaging.\n\n🔥 **High Availability**\n\nModified Raft distributed protocol enables automatic disaster recovery - when one machine goes down, another automatically takes over, seamless to users.\n\nDecentralized, no single point of failure, no central node, every node is independent and equal, all can provide service.\n\nEasy scaling, just add machines, no downtime needed, no data migration required, automatic data distribution by policy.\n\n0⃣️ **Ease of Use**\n\nNo dependency on any third-party middleware, simple deployment, start with a single command.\n\nChannel-based publish/subscribe design philosophy, easy to understand, easy to get started.\n\nSimple like Redis, high-performance like Kafka, reliable like MySQL\n\n🌲 **Technical Support**\n\nOfficial team provides technical support, documentation, community discussion groups, and issue feedback.\n\n\nFeature List\n---------------\n\n\n- [x] Custom message support\n- [x] Subscribe/Publish pattern support\n- [x] Personal/Group/Customer Service/Community channels\n- [x] Channel blacklist support\n- [x] Channel whitelist support\n- [x] Permanent message roaming, no message loss when switching devices\n- [x] Online status, multi-device online for same account\n- [x] Real-time message sync across devices\n- [x] Server-maintained recent conversation list\n- [x] Command messages support\n- [x] Offline command interface\n- [x] Webhook support for easy business system integration\n- [x] Datasource support for seamless business data integration\n- [x] WebSocket connection support\n- [x] TLS 1.3 support\n- [x] Proxy protocol support\n- [x] JSON protocol communication\n- [x] Prometheus monitoring support\n- [x] Monitoring system development\n- [x] Streaming messages (like ChatGPT output stream)\n- [x] Distributed support\n    - [x] Decentralized design, cluster auto-repairs when any node goes down\n    - [x] Data redundancy between cluster nodes, any node damage doesn't affect data integrity\n    - [x] Fast automatic cluster scaling\n\n\nQuick Start\n---------------\n\n```shell\n\ngit clone https://github.com/WuKongIM/WuKongIM.git\n\ncd WuKongIM/docker/cluster\n\nsudo docker compose up -d\n\n```\n\nAdmin panel: http://127.0.0.1:15300/web\n\nChat demo: http://127.0.0.1:15172/login\n\n\n\nDevelopment\n---------------\n\n### Standalone\n\n```shell\n\n\ngo run main.go\n\n(or go run main.go --config config/wk.yaml)\n\n```\n\n### Distributed\n    \n```yaml\n\n# Start first node\ngo run main.go --config  ./exampleconfig/cluster1.yaml\n\n# Start second node\ngo run main.go --config  ./exampleconfig/cluster2.yaml\n\n# Start third node\ngo run main.go --config  ./exampleconfig/cluster3.yaml\n\n```\n\n\n### Access\n\nAdmin panel: http://127.0.0.1:5300/web\n\nChat demo: http://127.0.0.1:5172/chatdemo\n\n### Client Usage\n\n```typescript\nimport { WKIM, WKIMChannelType, WKIMEvent } from 'easyjssdk';\n\n// 1. Initialize\nconst im = WKIM.init(\"ws://your-wukongim-server.com:5200\", {\n    uid: \"your_user_id\", // Current user's uid\n    token: \"your_auth_token\" // Auth token (optional if auth is disabled)\n});\n\n// 2. Listen\nim.on(WKIMEvent.Connect, () =\u003e {\n    console.log(\"IM Connected!\");\n    // Send message\n    const result = await im.send(\"target user\",WKIMChannelType.Person,{ type: \"text\", content: \"Hello from EasyJSSDK!\" })\n});\n\n// Listen for incoming messages\nim.on(WKIMEvent.Message, (message) =\u003e {\n    console.log(\"Received:\", message);\n});\n\n// Listen for errors\nim.on(WKIMEvent.Error, (error) =\u003e {\n    console.error(\"IM Error:\", error);\n});\n\n// 3. Connect\nawait im.connect()\n\n\n\n\n```\n\n\nProduction Deployment\n---------------\n\nPlease refer to the [Deployment Guide](https://githubim.com/install)\n\n\n\n\nSDKs and Demos\n---------------\n\n\n\n| Project | Github | Example | Docs | Description |\n| ---- | ---------- | --------- | ---- |  ---- |\n|   WuKongIM   |   [Github](https://github.com/WuKongIM/WuKongIM)         |     N/A |  [Docs](https://githubim.com)  \u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;       |    WuKongIM server, handles connections and message delivery |\n|   WuKongIMAndroidSDK   |   [Github](https://github.com/WuKongIM/WuKongIMAndroidSDK)         |     [Example](https://github.com/WuKongIM/WuKongIMAndroidSDK/tree/master/app) | [Docs](https://githubim.com/sdk/android/intro.html)    |    WuKongIM Android SDK  |\n|   WuKongIMiOSSDK   |   [Github](https://github.com/WuKongIM/WuKongIMiOSSDK)         |     [Example](https://github.com/WuKongIM/WuKongIMiOSSDK/tree/main/Example)  | [Docs](https://githubim.com/sdk/iossdk/intro.html)     |    WuKongIM iOS SDK  |\n|   WuKongIMUniappSDK   |   [Github](https://github.com/WuKongIM/WuKongIMUniappSDK)         |     [Example](https://github.com/WuKongIM/WuKongIMUniappSDK/tree/main/examples)  | [Docs](https://githubim.com/sdk/uniapp.html)      |    WuKongIM Uniapp SDK  |\n|   WuKongIMJSSDK   |   [Github](https://github.com/WuKongIM/WuKongIMJSSDK)         |     [Example](https://github.com/WuKongIM/WuKongIMJSSDK/tree/main/examples)   | [Docs](https://githubim.com/sdk/jssdk/intro.html)     |    WuKongIM JS SDK  |\n|   WuKongIMFlutterSDK   |    [Github](https://github.com/WuKongIM/WuKongIMFlutterSDK)        |    [Example](https://github.com/WuKongIM/WuKongIMFlutterSDK/tree/master/example)   |[Docs](https://githubim.com/sdk/flutter/intro.html)    |    WuKongIM Flutter SDK |\n|   WuKongIMReactNativeDemo   |   [Github](https://github.com/wengqianshan/WuKongIMReactNative)         |     N/A  |  N/A  |    WuKongIM React Native Demo (contributed by [wengqianshan](https://github.com/wengqianshan))  |\n|   WuKongIMHarmonyOSSDK   |   [Github](https://github.com/WuKongIM/WuKongIMHarmonyOSSDK)         |     [Example](https://github.com/WuKongIM/WuKongIMHarmonyOSSDK/tree/main/entry)  |  [Docs](https://githubim.com/sdk/harmonyos/intro.html)   |   WuKongIM HarmonyOS SDK  |\n\n\n\n\nNode Failover Demo\n--------\n\n![Node Failover Demo](./docs/architecture/cluster-failover.webp)\n\n\nScreenshots\n---------------\n\n\n||||\n|:---:|:---:|:--:|\n|![](./docs/2.0-screen/screen-01.png)|![](./docs/2.0-screen/screen-02.png)|![](./docs/2.0-screen/screen-03.png)|\n|![](./docs/2.0-screen/screen-04.png)|![](./docs/2.0-screen/screen-05.png)|![](./docs/2.0-screen/screen-06.png)|\n|![](./docs/2.0-screen/screen-07.png)|![](./docs/2.0-screen/screen-08.png)|![](./docs/2.0-screen/screen-09.png)|\n|![](./docs/2.0-screen/screen-10.png)|![](./docs/2.0-screen/screen-11.png)| ![](./docs/2.0-screen/screen-12.png) |\n| ![](./docs/2.0-screen/screen-13.png) | ![](./docs/2.0-screen/screen-14.png) |\n\nStar\n---------------\n\nOur team has been dedicated to instant messaging development. We need your encouragement! If you find this project helpful, please give us a star. Your support is our greatest motivation.\n\nCase Study\n---------------\n\n**Project Name**\n\nTangSengDaoDao\n\n**Open Source**\n\nhttps://github.com/TangSengDaoDao/TangSengDaoDaoServer\n\n**Screenshots**\n\n||||\n|:---:|:---:|:--:|\n|![](./docs/case/tsdaodao/screenshot/conversationlist.webp)|![](./docs/case/tsdaodao/screenshot/messages.webp)|![](./docs/case/tsdaodao/screenshot/robot.webp)|\n\n\n|||          |\n|:---:|:---:|:-------------------:|\n\n![](./docs/case/tsdaodao/screenshot/pc11.png)\n\n\n\n\nContact\n---------------\n\nWeChat ID: wukongimgo (mention you want to join the group)\n\n![image](./wechat.png)\n\n\n\nLicense\n---------------\n\nWuKongIM is licensed under the [Apache License 2.0](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwukongim%2Fwukongim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwukongim%2Fwukongim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwukongim%2Fwukongim/lists"}