- 新增 compose.production.yaml 和 compose.production.server.yaml 部署配置 - 添加 nginx.dev.xuqinmin.com.conf 和 nginx.sentry.xuqinmin.com.conf 反向代理配置 - 创建详细的部署指南文档 deploy/README.md,涵盖架构设计和部署步骤 - 添加前端访问文档 web/README.md,包含线上地址和接口说明 - 补充平台文档总览 README.md,整合各模块文档入口 - 配置多服务容器化部署,包括 tenant-service、im-service、push-service 等 - 设置外部数据库和 Redis 连接配置,确保服务间正确通信 - 配置 WebSocket 和 API 路由转发规则,支持实时通信和版本更新服务
4.9 KiB
4.9 KiB
Java Server SDK
XuqmGroup 服务端 Java SDK,按腾讯云服务端 API 的思路封装了以下能力:
- IM 账号、UserSig 生成与登录
- 消息发送、编辑、撤回、历史查询
- 好友、黑名单、会话、群组
- Webhook、管理端操作、统计
- Push 注册与发送
- Update 版本检查、上传、发布、灰度、应用商店提审
安装
Maven 在 pom.xml 中添加:
<repository>
<id>xuqm-nexus</id>
<url>https://nexus.xuqinmin.com/repository/maven-public/</url>
</repository>
<dependency>
<groupId>com.xuqm</groupId>
<artifactId>im-sdk</artifactId>
<version>0.1.0-SNAPSHOT</version>
</dependency>
Gradle:
repositories {
maven { url = uri("https://nexus.xuqinmin.com/repository/maven-public/") }
}
dependencies {
implementation("com.xuqm:im-sdk:0.1.0-SNAPSHOT")
}
初始化
import com.xuqm.im.sdk.XuqmImServerSdk;
XuqmImServerSdk client = XuqmImServerSdk.builder()
.baseUrl("https://dev.xuqinmin.com")
.appKey("your_app_key")
.appSecret("your_app_secret")
.build();
服务端 SDK 需要
appSecret用于 HMAC 签名,appSecret绝不下发到客户端。
UserSig
String userSig = client.generateUserSig("user_001");
boolean valid = client.verifyUserSig("user_001", userSig);
var login = client.loginWithUserSig("user_001", userSig);
管理员账号可用于服务端 SDK / 管理端 REST API;建议在 IM 管理页先给对应注册用户打上管理员标记。
发送消息
import com.xuqm.im.sdk.XuqmImServerSdk.ImMessage;
import com.xuqm.im.sdk.XuqmImServerSdk.SendMessageRequest;
ImMessage msg = client.sendMessage(new SendMessageRequest(
"user_002",
"SINGLE",
"TEXT",
"Hello from Java SDK!",
null,
null,
null
));
System.out.println("消息已发送: " + msg.getId());
发送群消息
ImMessage msg = client.sendMessage(SendMessageRequest.builder()
.toId("group_xxx")
.chatType("GROUP")
.msgType("TEXT")
.content("大家好")
.build());
撤回消息
client.revokeMessage("message_id");
能力分类
| 分类 | 主要方法 |
|---|---|
| IM 账号 | generateUserSig, verifyUserSig, login, loginWithUserSig, importAccount, importAccounts, deleteAccount, getProfile, updateProfile, searchAccounts |
| 消息 | sendMessage, revokeMessage, editMessage, fetchHistory, fetchGroupHistory, searchMessages |
| 会话 | listConversations, setConversationPinned, setConversationMuted, markRead, setDraft, setConversationHidden, setConversationGroup, deleteConversation |
| 好友 | listFriends, addFriend, addFriends, removeFriend, removeFriends, removeAllFriends, setFriendGroup, listFriendGroups, listFriendsByGroup, checkFriends |
| 黑名单 | listBlacklist, addBlacklist, removeBlacklist, checkBlacklist |
| 群组 | listGroups, createGroup, updateGroup, addGroupMember, addGroupMembers, removeGroupMember, removeGroupMembers, setGroupRole, transferGroupOwner, leaveGroup, updateGroupAttributes, removeGroupAttributes, muteGroupMember, dismissGroup, sendGroupJoinRequest, listGroupJoinRequests, acceptGroupJoinRequest, rejectGroupJoinRequest, acceptGroupJoinRequests, rejectGroupJoinRequests |
| 管理端 | queryUserState, kickUsers, batchSendMessage, adminSetMsgRead, importMessages, adminTransferGroupOwner, adminUpdateGroupAttributes, adminRemoveGroupAttributes, adminGroupReadReceipts |
| Webhook | listWebhooks, createWebhook, updateWebhook, deleteWebhook, verifyCallbackSignature, parseCallbackEnvelope, 各类 parse*CallbackPayload |
| Push | registerPushToken, sendPush, pushUserStatus, pushDeviceLogs, testOfflinePush |
| Update | checkAppUpdate, uploadAppVersion, publishAppVersion, unpublishAppVersion, grayAppVersion, listAppVersions, checkRnUpdate, uploadRnBundle, publishRnBundle, unpublishRnBundle, listRnBundles |
群管理示例
import com.xuqm.im.sdk.XuqmImServerSdk.GroupView;
GroupView group = client.createGroup("项目讨论", List.of("user_001", "user_002"), "NORMAL");
client.addGroupMember("group_xxx", "user_003");
client.removeGroupMember("group_xxx", "user_003");
List<GroupView> groups = client.listGroups();
Push 推送
import com.xuqm.sdk.server.model.SendPushRequest;
client.sendPush(SendPushRequest.builder()
.userId("user_001")
.title("新消息")
.body("你有一条未读消息")
.payload("{\"chatId\":\"user_002\"}")
.build());
错误处理
import com.xuqm.im.sdk.XuqmImServerSdk.ImSdkException;
try {
ImMessage msg = client.sendMessage(request);
} catch (ImSdkException e) {
System.err.printf("API 错误: status=%d, code=%d, message=%s%n",
e.getHttpStatus(), e.getCode(), e.getMessage());
}