- 实现了聊天消息发送功能,支持文本、图片、视频、音频、文件等多种消息类型 - 集成了文件上传下载功能,支持多媒体文件的传输和管理 - 添加了群组管理功能,包括创建群组、成员管理、权限控制等操作 - 实现了好友系统,支持好友添加、删除、分组等功能 - 集成了黑名单管理,提供用户屏蔽和解除屏蔽功能 - 添加了会话管理功能,支持对话列表、未读消息统计等 - 实现了历史消息查询和搜索功能 - 添加了实时连接状态管理和自动重连机制
2.6 KiB
2.6 KiB
Vue3 SDK 概览
包名:@xuqm/vue3-sdk · 版本:0.1.0 · 支持:Vue 3.4+、Vite 5+
功能模块
| 导出 | 功能 |
|---|---|
useXuqm() |
全局初始化 Composable |
useIm() |
IM 单聊/群聊响应式状态 |
XuqmProvider |
可选根组件(自动初始化) |
安装
npm install @xuqm/vue3-sdk
从私有 Nexus 安装时,在 .npmrc 中添加:
@xuqm:registry=https://nexus.xuqinmin.com/repository/npm-hosted/
快速接入
1. 全局初始化(main.ts)
import { createApp } from 'vue'
import { createXuqm } from '@xuqm/vue3-sdk'
import App from './App.vue'
const app = createApp(App)
app.use(createXuqm({
appKey: 'your_app_key',
debug: import.meta.env.DEV,
}))
app.mount('#app')
2. IM 登录与消息监听
<script setup lang="ts">
import { onMounted, onUnmounted } from 'vue'
import { useIm } from '@xuqm/vue3-sdk'
const { messages, connected, login, sendMessage, revokeMessage } = useIm()
onMounted(() => login('user_001', 'your_user_sig_jwt'))
</script>
<template>
<div>
<span :class="connected ? 'green' : 'gray'">
{{ connected ? '已连接' : '未连接' }}
</span>
<div v-for="msg in messages" :key="msg.id">
<b>{{ msg.fromUserId }}</b>: {{ msg.content }}
</div>
</div>
</template>
3. 发送消息
// 文本
await sendMessage('user_002', 'SINGLE', 'TEXT', 'Hello!')
// 图片
await sendMessage('user_002', 'SINGLE', 'IMAGE', JSON.stringify({
url: 'https://cdn.example.com/img.jpg',
width: 1200, height: 800,
}))
4. 撤回消息
const revoked = await revokeMessage(msg.id)
5. 群聊
const { createGroup, listGroups, subscribeGroup, groupMessages } = useIm()
// 创建群
const group = await createGroup('开发群', ['user_001', 'user_002'])
// 订阅群消息
subscribeGroup(group.id)
// 发群消息
await sendMessage(group.id, 'GROUP', 'TEXT', '大家好')
响应式状态
useIm() 返回的响应式 ref:
const {
messages, // Ref<ImMessage[]> 单聊消息列表
groupMessages, // Ref<ImMessage[]> 当前群消息列表
connected, // Ref<boolean> IM 连接状态
currentUser, // Ref<string | null> 当前登录用户
} = useIm()
消息气泡组件(内置)
SDK 内置基础气泡组件,开箱即用:
<script setup lang="ts">
import { ImMessageBubble } from '@xuqm/vue3-sdk'
</script>
<template>
<ImMessageBubble
v-for="msg in messages"
:key="msg.id"
:message="msg"
:is-own="msg.fromUserId === currentUser"
@revoke="revokeMessage(msg.id)"
/>
</template>