# imserver-sdk-java
**Repository Path**: juggleim/imserver-sdk-java
## Basic Information
- **Project Name**: imserver-sdk-java
- **Description**: Java 语言版本的 JuggleIM API SDK
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2024-10-17
- **Last Updated**: 2026-07-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JuggleIM 服务端 Java SDK
**面向 JuggleIM REST API 的服务端 Java 客户端。**
[](./LICENSE)
[](https://github.com/juggleim/imserver-sdk-java/actions/workflows/ci.yml)
[](./pom.xml)
[](https://github.com/juggleim/imserver-sdk-java/stargazers)
**[English](./README.md)** · **简体中文**
[官网](https://www.juggle.im/) ·
[文档](https://www.juggle.im/docs/guide/intro/) ·
[服务端 API](https://www.juggle.im/docs/server/api/) ·
[IM Server](https://github.com/juggleim/im-server)
---
`imserver-sdk-java` 帮助可信任的 Java 业务后端调用 JuggleIM 服务端 API,无需重复实现请求签名和响应映射。它仅用于服务端;App Secret 绝不能嵌入 Android、桌面、Web 或其他客户端应用。
## API 覆盖
- 用户:注册、查询、更新、踢出、在线状态、封禁、黑名单和标签
- 消息:单聊消息、聊天室消息、聊天室广播和撤回
- 群组:创建、更新、解散、查询、成员管理、禁言、白名单和设置
- 聊天室:创建、销毁、查询、成员检查、封禁和禁言控制
- 敏感词:添加、删除、查询和文件导入
需要更广的 API 覆盖时,也可以查看 [Go](https://github.com/juggleim/imserver-sdk-go) 和
[Python](https://github.com/juggleim/imserver-sdk-python) 服务端 SDK。
## 环境要求
- JDK 23 或更高版本(与当前 `pom.xml` 编译目标一致)
- Maven 3.8+
- 正在运行的 [JuggleIM 服务](https://github.com/juggleim/im-server)
- 通过 JuggleIM 管理控制台创建的 App Key 和 App Secret
## 从源码安装
当前构件尚未发布到 Maven Central,请先构建并安装到本地 Maven 仓库:
```bash
git clone https://github.com/juggleim/imserver-sdk-java.git
cd imserver-sdk-java
mvn clean install
```
然后在 Maven 项目中添加:
```xml
com.juggle.im
imserver-sdk-java
1.1
```
## 快速开始
```java
import com.juggle.im.JuggleIm;
import com.juggle.im.models.user.UserInfo;
import com.juggle.im.models.user.UserTokenResult;
public class QuickStart {
public static void main(String[] args) throws Exception {
JuggleIm sdk = new JuggleIm(
System.getenv("JUGGLEIM_APP_KEY"),
System.getenv("JUGGLEIM_APP_SECRET"),
System.getenv().getOrDefault("JUGGLEIM_API_URL", "http://127.0.0.1:9001")
);
UserInfo user = new UserInfo()
.setUserId("user-001")
.setNickname("Demo User")
.setUserPortrait("https://example.com/avatar.png");
UserTokenResult result = sdk.user.register(user);
System.out.println(result);
}
}
```
通过环境变量运行示例,不要把凭据提交到仓库:
```bash
export JUGGLEIM_APP_KEY="your-app-key"
export JUGGLEIM_APP_SECRET="your-app-secret"
export JUGGLEIM_API_URL="http://127.0.0.1:9001"
mvn package
```
然后在 IDE 中使用 Maven 项目 Classpath 运行 `com.juggle.im.example.user.UserExample`。
生成的 JAR 不是包含全部依赖的 uber-JAR,运行时仍需保留 SDK 的 Maven 依赖。
> 示例程序会调用真实的 JuggleIM 服务。对非开发环境执行前,请先检查示例中的用户 ID 和请求数据。
## 开发
```bash
mvn test
mvn package
```
源码位于 `src/main/java/com/juggle/im/`。主要入口是 `com.juggle.im.JuggleIm`,它提供
`user`、`msgSender`、`group`、`chatroom` 和 `sensitiveWord` API 分组。
## 安全说明
- App Secret 只应保存在可信任的服务端基础设施中。
- 使用环境变量或密钥管理服务加载凭据。
- 生产环境 API 流量必须使用 HTTPS。
- 不要在示例或测试中提交生产用户 ID、Token、消息内容或任何凭据。
- 安全漏洞请通过仓库 **Security** 页面私下报告。
## 参与贡献
欢迎提交 Issue 和 Pull Request。新增接口时,请同时提供请求/响应模型、示例或单元测试,并附上对应的[服务端 API](https://www.juggle.im/docs/server/api/) 链接。
## 许可证
[Apache License 2.0](./LICENSE)