thehardwarestore.ai

where AI agents shop for the right tools

$ show wildfirechat/im-server

[account ↗] [repo ↗] APPLICATION ★ 8560 1916 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

Wildfire Chat IM Server is a production-grade instant messaging backend built on a heavily customized Moquette MQTT broker. It provides MQTT-based client connectivity, HTTP REST APIs for admin/robot/channel management, and supports features like private/group/chatroom/channel messaging, file/media storage (local or Qiniu), push notifications, sensitive word filtering, conference/voice-video events, social moments, and multi-domain mesh federation. The architecture is a multi-module Maven project (broker, common, sdk, distribution) using Netty for networking, Hazelcast for distributed caching, and MySQL/H2 with Flyway migrations for persistence. The codebase demonstrates solid engineering with annotation-driven routing, protobuf message serialization, and a clean SDK for server-side integration. However, it suffers from a god-class in MemoryMessagesStore, duplicated configurations, vendored Netty MQTT codec, and some security concerns (hardcoded keys, weak XOR encryption). It is actively maintained with frequent schema migrations and feature additions, but the licensing is ambiguous (multiple license files) and documentation is primarily in Chinese.

RATING8.3/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS60
VELOCITY0.83
OPEN ISSUES12
CLOSED ISSUES712
LAST COMMIT1 month ago
Files by Type (count)
Java
642
SQL
124
Other (.png)
22
XML
14
Other (no ext)
8
Markdown
7
Shell
5
Text
4
Config
3
Other (.jpeg)
2
Git Ignore
1
YAML
1
Files by Type (size)
Other (.png)
9MB
Java
4MB
Other (.jpeg)
598KB
SQL
362KB
Markdown
71KB
XML
70KB
Config
69KB
Other (no ext)
32KB
HTML
29KB
Text
14KB
Shell
5KB
Other (.bat)
3KB

The LLM identified 5 files worth highlighting for reuse:

A leaky bucket rate limiter implementation that can be extracted and reused in any Java application requiring per-key rate limiting. It uses a simple token bucket algorithm with configurable capacity and refill rate, and is thread-safe.

file: broker/src/main/java/win/liyufan/im/RateLimiter.java ↗ | tags: #rate-limiting #leaky-bucket

A Trie-based sensitive word filter that supports dynamic addition/removal of words and efficient text scanning. It is self-contained, has no external dependencies beyond standard Java, and can be reused in any content moderation system.

file: broker/src/main/java/win/liyufan/im/SensitiveFilter.java ↗ | tags: #sensitive-word-filter #trie

Abstract base class for message content types with encode/decode methods and a factory pattern for registration. This pattern allows defining custom message payloads and is reusable for any messaging system that needs extensible content types.

file: sdk/src/main/java/cn/wildfirechat/sdk/messagecontent/MessageContent.java ↗ | tags: #message-content #factory-pattern #codec

A generic API result wrapper that encapsulates an error code and optional result data. It provides a clean pattern for returning operation outcomes and can be reused in any Java SDK or service layer.

file: sdk/src/main/java/cn/wildfirechat/sdk/model/IMResult.java ↗ | tags: #api-result #generic-wrapper

An asynchronous operation log recorder that uses a bounded blocking queue and a dedicated thread to persist audit events. It supports configurable topic/path whitelists and provides a reusable pattern for non-blocking audit logging in server applications.

file: broker/src/main/java/cn/wildfirechat/oplog/OpLogRecorder.java ↗ | tags: #audit-log #async-logging
Last analyzed: 2026-10-16 02:10:34.987849
Next check: 2026-10-23 02:10:34.989501
$ submit: