omnilink-client
v1.0.32
Published
融合通信客户端
Maintainers
Readme
OmniLink-Client
Omnilink-client,融合通信客户端组件库。
开始
安装
npm install omnilink-client@latest配置
使用vite配置.env运行环境
# Omnilink服务端地址
VITE_OMNILINK_SOCKET_SERVER_URL=http://localhost:3020
# Omnilink WebSocket路径
VITE_OMNILINK_SOCKET_PATH=/omnilink/socket.io
# 是否重连(默认为true)
VITE_OMNILINK_OCKET_RECONNECTION=true
# 最大重连次数(默认为0, 无限重连)
VITE_OMNILINK_SOCKET_RECONNECTION_ATTEMPTS=0
# 初始重连延迟(第一次重连前的等待时间(毫秒),默认1000)
VITE_OMNILINK_SOCKET_RECONNECTION_DELAY=1000
# 最大重连延迟(重连之间最大允许的间隔时间(毫秒),默认5000)
VITE_OMNILINK_SOCKET_RECONNECTION_DELAY_MAX=5000
# 是否携带凭证(默认为true)
VITE_OMNILINK_SOCKET_WITH_CREDENTIALS=true
# 是否输出log日志
VITE_OMNILINK_LOG=true
# 是否输出warn日志
VITE_OMNILINK_WARN=true
# 是否输出error日志
VITE_OMNILINK_ERROR=true配置服务器代理
配置各项服务的代理,解决跨域问题(测试环境)。
server: {
https: true,
proxy: {
'/omnilink': {
target: 'https://localhost/omnilink/', // 替换为Omnilink服务器地址
changeOrigin: true,
rewrite: (p) => p.replace(/^\/omnilink/, '')
}
}
},配置main.js
const app = createApp(App)
// 使用pinia
import { createPinia } from 'pinia'
const pinia = createPinia()
app.use(pinia)
// 使用omnilink
import omnilinkClient from 'omnilink-client/install'
app.use(omnilinkClient, {
$pinia: pinia
})更新内容
| 版本号 | 更新内容 | | ---------- | ------------------------------------------------------------ | | 1.0.32 | 修复关闭连接错误 | | 1.0.31 | 增加更多打印日志 | | 1.0.30 | 修复服务中继问题 | | 1.0.29 | 增加produce连接判断 | | 1.0.28 | 增加MediaService的produce方法的错误信息反馈 | | 1.0.27 | 1. 增加通过会议ID获取会议详情的函数;2. 在用户会议列表中增加正在参会的人员数量;3. 增加查看会议历史参会人员的功能;4. 增加会议预约开始时间和结束时间的管理;5. 增加用户入会前检查(是否已参加别的会议) | | 1.0.26 | 优化代码 | | 1.0.25 | 增加结束会议的功能 | | 1.0.24 | 更新了文档:配置main.js | | 1.0.23 | 彻底修复pinia使用时报"未初始化"的问题 | | 1.0.21 | 修复request | | 1.0.20 | 修复request未定义错误 | | 1.0.19 | 修复 | | 1.0.18 | 更新文档; 将开发的代理配置统一到omnilink | | 1.0.17 | 修复bug | | 1.0.16 | 修复bug | | 1.0.15 | 修复bug | | 1.0.14 | 服务地址增加前缀 |
操作指南
导入omnilink包
主包
import { Omnilink } from 'omnilink-client/omnilink'提供绝大部分服务
媒体服务包
import { MediaService } from 'omnilink-client/media-service'提供媒体服务相关的接口
静态类
import {OmnilinkNoticeCommand, StreamKind, ConversationStatus} from 'omnilink-client/enums'/**
* 控制面板通知命令枚举
* 定义会议过程中各类实时通知的命令标识,用于跨组件/服务的事件通信
* (部分待补充, 其他可从示例代码中查看)
*/
export const OmnilinkNoticeCommand = {
MEETING_MEMBER_FORBID_ALL: "meeting-member-forbid-all", // 禁止所有会议成员的音视频操作
MEETING_MEMBER_PERMIT_ALL: "meeting-member-permit-all", // 允许所有会议成员的音视频操作
MEETING_MEMBER_SEND_MESSAGE: "meeting-member-send-message", // 会议成员发送消息通知
MEETING_MEMBER_JOINED_MEETING: "meeting-member-joined-meeting", // 有成员加入会议的通知
MEETING_MEMBER_LEFT_MEETING: "meeting-member-left-meeting", // 有成员离开会议的通知
MEETING_MEMBER_CLOSED_PRODUCER: "meeting-member-closed-producer", // 会议成员关闭媒体流的通知
MEETING_MEMBER_PRODUCE: 'meeting-member-produce', // 会议成员开启媒体流的通知
MEETING_MEMBER_STATUS_CHANGED: "meeting-member-status-changed", // 会议成员状态变更的通知(如举手/静音)
MEETING_BROADCAST_NOTICE: "meeting-broadcast-notice", // 会议广播通知(如系统公告)
PRODUCER_CLOSED: "producer-closed", // 媒体流生产者关闭的通知
MEETING_CLOSED: "meeting-closed", // 会议结束通知
}
/**
* 媒体流类型枚举
* 定义系统中支持的媒体流种类,用于媒体流处理、展示和控制逻辑区分
*/
export const StreamKind = {
/** 视频流:来自摄像头的视频媒体流 */
Video: "video",
/** 音频流:来自麦克风的音频媒体流 */
Audio: "audio",
/** 屏幕共享流:用户共享的屏幕或应用窗口媒体流 */
Screen: "screen",
};
/**
* 会话状态枚举
* 定义会话(如聊天会话、通话会话)生命周期中的各种状态,用于状态流转控制
*/
export const ConversationStatus = {
/** 待处理(未响应):会话已创建但未被接收方处理(如未接听的通话) */
Pending: "pending",
/** 活跃中(进行中):会话处于正常交互状态(如正在进行的聊天或通话) */
Active: "active",
/** 已关闭:会话已结束或被终止(如已挂断的通话、已关闭的聊天窗口) */
Closed: "closed",
};全局通知回调
通知回调注册
Omnilink.onNotice(command, callback)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | -------------- | -------- | ---------------- |
| command | string | ✅ | 通知命令标识 |
| callback | Function | ✅ | 通知回调函数 |
描述:注册指定命令的通知回调函数,用于接收对应命令的通知
command 可从 OmnilinkNoticeCommand中获取。
通知回调移除
Omnilink.offNotice(command)| 参数名 | 类型 | 必填 | 说明 |
| ------------- | ------------ | -------- | ---------------- |
| command | string | ✅ | 通知命令标识 |
描述:移除指定命令的通知回调函数,不再接收对应命令的通知
注册与登录
检测是否登录
Omnilink.user.isLogin()返回值
- 类型:
Boolean
注册用户
Omnilink.user.register(userId, username, password, avatar, phone, email)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | ------------ |
| userId | string | ✅ | 用户ID |
| username | string | ✅ | 用户名 |
| password | string | ✅ | 密码 |
| avatar | string | ❌ | 头像 |
| phone | string | ❌ | 电话号码 |
| email | string | ❌ | 电子邮件 |
返回值
- 类型:
Promise - 描述:返回注册请求的结果
用户登录
Omnilink.user.login(userId, password)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | ---------- |
| userId | string | ✅ | 用户ID |
| password | string | ✅ | 密码 |
返回值
- 类型:
Promise<Boolean> - 描述:登录成功返回
true,失败抛出错误。用户登录后,用户信息会保存在浏览器的session中,关闭页面session会丢失,需重新登录。
退出登录
Omnilink.user.logout()获取用户信息
获取用户id
Omnilink.user.userId获取用户名
Omnilink.user.username获取用户头像
Omnilink.user.avatar获取完整用户信息
Omnilink.user.getUser()返回值
- 类型:
Promise - 描述:返回包含用户详细信息的数据
好友管理
获取好友列表
Omnilink.user.fetchFriends()返回值
- 类型:
Promise - 描述:返回好友列表数据
发起好友请求
Omnilink.user.requestFriend(friendId, request, remarkName, remark)| 参数名 | 类型 | 必填 | 说明 |
| ---------------- | ------------ | -------- | ------------ |
| friendId | string | ✅ | 好友ID |
| request | string | ✅ | 请求信息 |
| remarkName | string | ❌ | 备注名称 |
| remark | string | ❌ | 备注信息 |
返回值
- 类型:
Promise - 描述:返回请求结果
获取好友请求列表
Omnilink.user.fetchFriendRequestList()返回值
- 类型:
Promise - 描述:返回好友请求列表数据
接受好友请求
Omnilink.user.acceptFriendRequest(requestId, remarkName, remark)| 参数名 | 类型 | 必填 | 说明 |
| ---------------- | ------------ | -------- | ------------ |
| requestId | string | ✅ | 请求ID |
| remarkName | string | ❌ | 备注名称 |
| remark | string | ❌ | 备注信息 |
返回值
- 类型:
Promise - 描述:返回操作结果
拒绝好友请求
Omnilink.user.rejectFriendRequest(requestId)| 参数名 | 类型 | 必填 | 说明 |
| --------------- | ------------ | -------- | ---------- |
| requestId | string | ✅ | 请求ID |
返回值
- 类型:
Promise - 描述:返回操作结果
移除好友
Omnilink.user.removeFriend(friendId)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | ---------- |
| friendId | string | ✅ | 好友ID |
返回值
- 类型:
Promise - 描述:返回操作结果
设置好友备注名称
Omnilink.user.setFriendRemarkName(friendId, remarkName)| 参数名 | 类型 | 必填 | 说明 |
| ---------------- | ------------ | -------- | ------------ |
| friendId | string | ✅ | 好友ID |
| remarkName | string | ✅ | 备注名称 |
返回值
- 类型:
Promise - 描述:返回操作结果
设置好友备注信息
Omnilink.user.setFriendRemark(friendId, remark)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | ------------ |
| friendId | string | ✅ | 好友ID |
| remark | string | ✅ | 备注信息 |
返回值
- 类型:
Promise - 描述:返回操作结果
设置好友静音
Omnilink.user.setFriendMute(friendId, mute)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------- | -------- | ------------ |
| friendId | string | ✅ | 好友ID |
| mute | boolean | ✅ | 是否静音 |
返回值
- 类型:
Promise - 描述:返回操作结果
设置好友置顶
Omnilink.user.setFriendStick(friendId, stick)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------- | -------- | ------------ |
| friendId | string | ✅ | 好友ID |
| stick | boolean | ✅ | 是否置顶 |
返回值
- 类型:
Promise - 描述:返回操作结果
获取好友信息
Omnilink.user.getFriendInfo(friendId)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | ---------- |
| friendId | string | ✅ | 好友ID |
返回值
- 类型:
Promise - 描述:返回好友详细信息
群组管理
创建群组
Omnilink.user.createGroup(members, groupName)| 参数名 | 类型 | 必填 | 说明 |
| --------------- | ------------------- | -------- | -------------- |
| members | Array<string> | ✅ | 成员ID列表 |
| groupName | string | ✅ | 群组名称 |
返回值
- 类型:
Promise - 描述:返回创建结果
设置群内备注名称
Omnilink.user.setRemarkNameInGroup(friendId, remarkName)| 参数名 | 类型 | 必填 | 说明 |
| ---------------- | ------------ | -------- | ---------------- |
| friendId | string | ✅ | 成员ID |
| remarkName | string | ✅ | 群内备注名称 |
返回值
- 类型:
Promise - 描述:返回操作结果
添加成员到群组
// 添加单个成员
Omnilink.user.addMemberToGroup(memberId, groupId)
// 添加多个成员
Omnilink.user.addMembersToGroup(newMembers, groupId)| 参数名 | 类型 | 必填 | 说明 |
| ---------------- | ------------------- | -------- | ---------------------------- |
| memberId | string | ✅ | 成员ID(单个添加时) |
| newMembers | Array<string> | ✅ | 成员ID列表(多个添加时) |
| groupId | string | ✅ | 群组ID |
返回值
- 类型:
Promise - 描述:返回操作结果
从群组移除成员
// 移除单个成员
Omnilink.user.removeMemberFromGroup(memberId, groupId)
// 移除多个成员
Omnilink.user.removeMembersFromGroup(members, groupId)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------------- | -------- | ---------------------------- |
| memberId | string | ✅ | 成员ID(单个移除时) |
| members | Array<string> | ✅ | 成员ID列表(多个移除时) |
| groupId | string | ✅ | 群组ID |
返回值
- 类型:
Promise - 描述:返回操作结果
个人信息管理
更新头像
Omnilink.user.updateAvatar(avatar)| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------ | -------- | ------------ |
| avatar | string | ✅ | 头像地址 |
返回值
- 类型:
Promise - 描述:返回更新结果
更新姓名
Omnilink.user.updateName(name)| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------ | -------- | ---------- |
| name | string | ✅ | 新姓名 |
返回值
- 类型:
Promise - 描述:返回更新结果
更新电话号码
Omnilink.user.updatePhone(phone)| 参数名 | 类型 | 必填 | 说明 |
| ----------- | ------------ | -------- | -------------- |
| phone | string | ✅ | 新电话号码 |
返回值
- 类型:
Promise - 描述:返回更新结果
更新电子邮件
Omnilink.user.updateEmail(email)| 参数名 | 类型 | 必填 | 说明 |
| ----------- | ------------ | -------- | -------------- |
| email | string | ✅ | 新电子邮件 |
返回值
- 类型:
Promise - 描述:返回更新结果
更新IP电话
Omnilink.user.updateIpPhone(ipPhone)| 参数名 | 类型 | 必填 | 说明 |
| ------------- | ------------ | -------- | ------------ |
| ipPhone | string | ✅ | 新IP电话 |
返回值
- 类型:
Promise - 描述:返回更新结果
更新密码
Omnilink.user.updatePassword(oldPassword, newPassword)| 参数名 | 类型 | 必填 | 说明 |
| ----------------- | ------------ | -------- | ---------- |
| oldPassword | string | ✅ | 旧密码 |
| newPassword | string | ✅ | 新密码 |
返回值
- 类型:
Promise - 描述:返回更新结果
获取用户列表
Omnilink.user.fetchUsers()返回值
- 类型:
Promise - 描述:返回用户列表数据
会议管理
创建会议
Omnilink.meeting.createMeeting()返回值
- 类型:
Promise - 描述:返回创建会议的结果
预约会议【update】
Omnilink.meeting.bookMeeting({meetingName, inviteMembers, visitorAllowed, bookingStartAt, bookingEndAt, notice})| 参数名 | 类型 | 必填 | 说明 |
| -------------------------------------------------------- | ------------- | -------- | ---------------- |
| meetingName | string | ✅ | 会议名称 |
| inviteMembers | Array | ✅ | 邀请成员列表 |
| visitorAllowed | boolean | ✅ | 是否允许访客 |
| bookingStartAt【update】 | string | ✅ | 预约开始时间 |
| bookingEndAt【update】 | string | ✅ | 预约结束时间 |
| notice | string | ❌ | 会议通知 |
返回值
- 类型:
Promise - 描述:返回预约会议的结果
获取我的会议列表【update】
Omnilink.meeting.myMeetings({pageIndex = 1, pageSize = 5, relevantType = []})| 参数名 | 类型 | 必填 | 说明 |
| ------------------ | -------------------------------- | -------- | ----------------------------------------------------------- |
| pageIndex | number | ❌ | 页码,默认1 |
| pageSize | number | ❌ | 每页条数,默认5 |
| relevantType | Array<MeetingRelevantType> | ❌ | 相关类型,可选值为CreateByMe、ParticipatedIn、BeInvited |
返回值
- 类型:
Promise<axios.AxiosResponse<any>> - 描述:返回我的会议列表数据。(增加正在参与的会员数)
加入会议
Omnilink.meeting.joinMeeting(id, password)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | ------------ |
| id | string | ✅ | 会议ID |
| password | string | ✅ | 会议密码 |
返回值
- 类型:
Promise<boolean> - 描述:加入成功返回
true,失败抛出错误;加入成功后会将会议ID、密码、令牌存储到sessionStorage
已加入的会议【new】
Omnilink.meeting.joinedMeetings()返回值
- 类型:
Promise - 描述:返回用户已加入(正在参与)的会议列表
获取会议详情信息
Omnilink.meeting.getMeetingInfo()返回值
- 类型:
Promise - 描述:返回会议详情信息
通过会议id获得会议信息 【new】
Omnilink.meeting.getMeetingInfoById(meetingId)| 参数名 | 类型 | 必填 | 说明 |
| --------------- | ------------ | -------- | ---------- |
| meetingId | string | ✅ | 会议ID |
返回值
- 类型:
Promise - 描述:返回会议详情信息(只有会议的创建者,参与者,被邀请者可以获取)
离开会议
Omnilink.meeting.leaveMeeting()返回值
- 类型:
Promise - 描述:返回离开会议的结果
结束会议
Omnilink.meeting.closeMeeting()返回值
- 类型:
Promise - 描述:返回结束会议的结果。所有参会的成员会收到会议结束的消息:
meeting-closed
发布群公告
Omnilink.meeting.broadcastNotice(notice)| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------ | -------- | ------------ |
| notice | string | ✅ | 公告内容 |
返回值
- 类型:
Promise - 描述:返回发布公告的结果(仅会议创建者可操作)
获取会议公告
Omnilink.meeting.fetchNotice(meetingId)| 参数名 | 类型 | 必填 | 说明 |
| --------------- | ------------ | -------- | ---------- |
| meetingId | string | ✅ | 会议ID |
返回值
- 类型:
Promise - 描述:返回会议公告信息
发送会议消息
Omnilink.meeting.sendMessage(message)| 参数名 | 类型 | 必填 | 说明 |
| ------------- | ------------ | -------- | ------------ |
| message | string | ✅ | 消息内容 |
返回值
- 类型:
Promise - 描述:返回发送消息的结果
禁止指定成员的某项权限
Omnilink.meeting.forbidMemberProduce(memberId, kind)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | -------------------------------- |
| memberId | string | ✅ | 成员ID |
| kind | string | ✅ | 权限类型,如"audio"、"video" |
返回值
- 类型:
Promise - 描述:返回操作结果
允许指定成员的某项权限
Omnilink.meeting.permitMemberProduce(memberId, kind)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | -------------------------------- |
| memberId | string | ✅ | 成员ID |
| kind | string | ✅ | 权限类型,如"audio"、"video" |
返回值
- 类型:
Promise - 描述:返回操作结果
禁止所有成员的某项权限
Omnilink.meeting.forbidAllMembers(kind)| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------ | -------- | -------------------------------- |
| kind | string | ✅ | 权限类型,如"audio"、"video" |
返回值
- 类型:
Promise - 描述:返回操作结果
允许所有成员的某项权限
Omnilink.meeting.permitAllMembers(kind)| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------ | -------- | -------------------------------- |
| kind | string | ✅ | 权限类型,如"audio"、"video" |
返回值
- 类型:
Promise - 描述:返回操作结果
获取会议在线成员列表
Omnilink.meeting.fetchOnlineMembers()返回值
- 类型:
Promise - 描述:返回会议在线成员列表
通过会议ID获取会议在线成员列表【new】
Omnilink.meeting.fetchOnlineMembersByMeetingId(meetingId)| 参数名 | 类型 | 必填 | 说明 |
| --------------- | ------------ | -------- | ---------- |
| meetingId | string | ✅ | 会议ID |
返回值
- 类型:
Promise - 描述:返回会议在线成员列表
获取会议消息列表
Omnilink.meeting.fetchMessages()返回值
- 类型:
Promise - 描述:返回会议消息列表
获取当前存储的会议ID
Omnilink.meeting.meetingId返回值
- 类型:
string|null - 描述:返回存储的会议ID或
null(未存储时)
获取当前存储的会议密码
Omnilink.meeting.password返回值
- 类型:
string|null - 描述:返回存储的会议密码或
null(未存储时)
获取当前存储的会议令牌
Omnilink.meeting.token返回值
- 类型:
string|null - 描述:返回存储的会议令牌或
null(未存储时)
资源清理
Omnilink.meeting.dispose()描述:调用父类的清理逻辑,进行资源清理
媒体服务管理
获取媒体服务实例
用户使用媒体服务,需要先获取媒体服务节点。
Omnilink.getMediaService(nodeId)| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------ | -------- | ---------------------------------------------- |
| nodeId | string | ❌ | 媒体服务节点ID,不提供时服务端会自动分配。 |
返回值
- 类型:
Promise<MediaService> - 描述:返回媒体服务实例,通过互斥锁保证获取操作的原子性
移除媒体服务
Omnilink.removeMediaService(nodeId)| 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------ | -------- | ------------------ |
| nodeId | string | ✅ | 媒体服务节点ID |
描述:移除指定节点ID的媒体服务
初始化媒体服务
// 需要先通过 Omnilink.getMediaService(nodeId) 获取MediaService的节点地址
// 创建媒体服务实例
const mediaService = new MediaService(id, host, port, options)| 参数名 | 类型 | 必填 | 说明 |
| ------------- | ------------ | -------- | -------------------- |
| id | string | ✅ | 媒体服务节点ID |
| host | string | ✅ | 媒体服务主机地址 |
| port | number | ✅ | 媒体服务端口 |
| options | object | ❌ | 媒体服务配置选项 |
资源清理
mediaService.dispose()描述:清理所有媒体资源,包括生产者、消费者和传输通道
获取工作负载
mediaService.getWorkerUsage()返回值
类型:
Promise描述:返回媒体服务工作负载信息
通用媒体流处理
发送媒体流
mediaService.produce(deviceId, token)| 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------------ | -------- | ------------------ |
| deviceId | string | ✅ | 媒体设备ID |
| token | string | ✅ | 媒体流标识令牌 |
返回值
- 类型:
Promise<Producer|null> - 描述:返回媒体生产者实例(根据设备类型自动选择音频/视频处理)
关闭媒体流发送
mediaService.closeProducer({ producerId })| 参数名 | 类型 | 必填 | 说明 |
| ---------------- | ------------ | -------- | ------------ |
| producerId | string | ✅ | 生产者ID |
返回值
- 类型:
Promise<boolean> - 描述:关闭成功返回
true
接收媒体流
接收媒体流
mediaService.consume(producerId, kind, appData)| 参数名 | 类型 | 必填 | 说明 |
|--------------|----------|------|----------------------|
| producerId | string | ✅ | 生产者ID |
| kind | string | ✅ | 媒体类型("audio"/"video") |
| appData | object | ❌ | 应用数据 |
返回值
- 类型:
Promise<{nodeId, consumerId: string, stream: MediaStream}> - 描述:返回包含节点ID、消费者ID和媒体流的对象
关闭媒体流接收
mediaService.closeConsumer(consumeId)| 参数名 | 类型 | 必填 | 说明 |
| --------------- | ------------ | -------- | ------------ |
| consumeId | string | ✅ | 消费者ID |
返回值
- 类型:
Promise - 描述:返回关闭操作结果
