call-live-sdk 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/index.d.ts +438 -0
- package/dist/api/request.d.ts +39 -0
- package/dist/assets/style.css +1 -0
- package/dist/call-live-sdk.es.js +263460 -0
- package/dist/call-live-sdk.umd.js +1 -0
- package/dist/chunks/Empty-BDMct_Gn.js +4 -0
- package/dist/chunks/queen-MdxXL6oM.js +4172 -0
- package/dist/chunks/queen-full-CQOoyRsi.js +4288 -0
- package/dist/chunks/queen-lite-B9oBZ9sm.js +4226 -0
- package/dist/chunks/queen-pro-RFAnqVlR.js +4139 -0
- package/dist/chunks/queen-simd-full-ra8nUvBN.js +4288 -0
- package/dist/chunks/queen-simd-lite-CXQWc1UV.js +4224 -0
- package/dist/chunks/queen-simd-pro-DVcT-lDD.js +4137 -0
- package/dist/chunks/queen-simd-uc5TO6ZA.js +4170 -0
- package/dist/com_feiyao_official.auth +0 -0
- package/dist/components/AudienceList.d.ts +5 -0
- package/dist/components/BrowserNotSupported.d.ts +12 -0
- package/dist/components/Call/index.d.ts +3 -0
- package/dist/components/CallGridLayout.d.ts +29 -0
- package/dist/components/CallSingleColumnLayout.d.ts +21 -0
- package/dist/components/CallUserList.d.ts +13 -0
- package/dist/components/CallUserVideo.d.ts +33 -0
- package/dist/components/CanvasCamera.d.ts +5 -0
- package/dist/components/CanvasUploadAudio.d.ts +2 -0
- package/dist/components/CanvasUploadVideo.d.ts +3 -0
- package/dist/components/CanvasVideoSlot.d.ts +14 -0
- package/dist/components/ConfigsInfo.d.ts +2 -0
- package/dist/components/ControlBottom.d.ts +2 -0
- package/dist/components/CountDown.d.ts +4 -0
- package/dist/components/Counter/index.d.ts +6 -0
- package/dist/components/DocumentControler.d.ts +3 -0
- package/dist/components/DrawingTools/ColorPicker.d.ts +9 -0
- package/dist/components/DrawingTools/DrawingToolbar.d.ts +27 -0
- package/dist/components/DrawingTools/LayoutSwitcher.d.ts +9 -0
- package/dist/components/DrawingTools/PreviewModal.d.ts +7 -0
- package/dist/components/DrawingTools/ShapeTypePicker.d.ts +9 -0
- package/dist/components/DrawingTools/SizePicker.d.ts +9 -0
- package/dist/components/DrawingTools/TextSizePicker.d.ts +9 -0
- package/dist/components/DrawingTools/ToolOption.d.ts +11 -0
- package/dist/components/DrawingTools/index.d.ts +8 -0
- package/dist/components/ElementList.d.ts +11 -0
- package/dist/components/Emoji.d.ts +2 -0
- package/dist/components/EnvExample.d.ts +7 -0
- package/dist/components/ErrorPage/ErrorPage.d.ts +8 -0
- package/dist/components/GlobalErrorBoundary.d.ts +60 -0
- package/dist/components/Guest/Guest.d.ts +3 -0
- package/dist/components/Guest/index.d.ts +2 -0
- package/dist/components/Head.d.ts +12 -0
- package/dist/components/LeaveRoom.d.ts +18 -0
- package/dist/components/LeftSidebar.d.ts +14 -0
- package/dist/components/LiveDetection.d.ts +3 -0
- package/dist/components/LivePlayer/LivePlayer.d.ts +2 -0
- package/dist/components/LivePlayer/index.d.ts +2 -0
- package/dist/components/LivePushStats.d.ts +2 -0
- package/dist/components/LiveWaitingRoom/LiveWaitingRoom.d.ts +10 -0
- package/dist/components/LiveWaitingRoom/index.d.ts +2 -0
- package/dist/components/MediaSettings/AudioVisualizer.d.ts +16 -0
- package/dist/components/MediaSettings/MediaSettings.d.ts +3 -0
- package/dist/components/MediaSettings/index.d.ts +2 -0
- package/dist/components/MetaItem.d.ts +3 -0
- package/dist/components/PaginatedList/index.d.ts +2 -0
- package/dist/components/RightSidebar/RightSidebar.d.ts +4 -0
- package/dist/components/RightSidebar/components/CallComponent/CallComponent.d.ts +7 -0
- package/dist/components/RightSidebar/components/CallComponent/features/invite/components/InviteGuestModal.d.ts +22 -0
- package/dist/components/RightSidebar/components/CallComponent/features/meeting/components/CallBottomActions.d.ts +15 -0
- package/dist/components/RightSidebar/components/CallComponent/features/meeting/components/CallControls.d.ts +15 -0
- package/dist/components/RightSidebar/components/CallComponent/features/meeting/components/MeetingUserList.d.ts +14 -0
- package/dist/components/RightSidebar/components/CallComponent/features/meeting/hooks/useCallConfig.d.ts +18 -0
- package/dist/components/RightSidebar/components/CallComponent/features/meeting/hooks/useOnlineUsers.d.ts +9 -0
- package/dist/components/RightSidebar/components/CallComponent/features/meeting/hooks/useUserActions.d.ts +6 -0
- package/dist/components/RightSidebar/components/CallComponent/features/waiting/components/WaitingUserList.d.ts +11 -0
- package/dist/components/RightSidebar/components/CallComponent/index.d.ts +3 -0
- package/dist/components/RightSidebar/components/CallComponent/shared/ui/CallUser.d.ts +14 -0
- package/dist/components/RightSidebar/components/CallComponent/shared/ui/ErrorBoundary.d.ts +22 -0
- package/dist/components/RightSidebar/components/CallComponent/shared/ui/LoadingSpinner.d.ts +19 -0
- package/dist/components/RightSidebar/components/CallComponent/types/index.d.ts +55 -0
- package/dist/components/RightSidebar/components/ChatComponent.d.ts +2 -0
- package/dist/components/RightSidebar/components/Prohibition.d.ts +2 -0
- package/dist/components/RightSidebar/components/TeamComponent.d.ts +2 -0
- package/dist/components/RightSidebar/index.d.ts +2 -0
- package/dist/components/RtcJoomRoom/RtcJoomRoom.d.ts +4 -0
- package/dist/components/RtcJoomRoom/components/InviteConfirmModal.d.ts +28 -0
- package/dist/components/RtcJoomRoom/hooks/useInviteConfirm.d.ts +40 -0
- package/dist/components/RtcJoomRoom/index.d.ts +12 -0
- package/dist/components/RtcJoomRoom/types.d.ts +333 -0
- package/dist/components/RtcJoomRoom/useMessageReceiver.d.ts +38 -0
- package/dist/components/RtcJoomRoom/useMessageSender.d.ts +28 -0
- package/dist/components/RtcJoomRoom/useRoomMessageHandler.d.ts +205 -0
- package/dist/components/ScenePanel.d.ts +14 -0
- package/dist/components/SourcePanel.d.ts +12 -0
- package/dist/components/UploadDocumentFrom/EasyCrop.d.ts +7 -0
- package/dist/components/UploadDocumentFrom/constants.d.ts +7 -0
- package/dist/components/UploadDocumentFrom/exports.d.ts +5 -0
- package/dist/components/UploadDocumentFrom/hooks/useLibrary.d.ts +41 -0
- package/dist/components/UploadDocumentFrom/index.d.ts +8 -0
- package/dist/components/UploadImageFrom/EasyCrop.d.ts +7 -0
- package/dist/components/UploadImageFrom/constants.d.ts +7 -0
- package/dist/components/UploadImageFrom/hooks/useImageLibrary.d.ts +39 -0
- package/dist/components/UploadImageFrom/index.d.ts +41 -0
- package/dist/components/UploadImageFrom/types.d.ts +39 -0
- package/dist/components/UploadImageFromV1/EasyCrop.d.ts +7 -0
- package/dist/components/UploadImageFromV1/constants.d.ts +7 -0
- package/dist/components/UploadImageFromV1/index.d.ts +3 -0
- package/dist/components/UploadImageFromV1/types.d.ts +39 -0
- package/dist/components/UserInfo.d.ts +7 -0
- package/dist/components/autoPlayModal/index.d.ts +12 -0
- package/dist/hooks/useCallUserPagination.d.ts +58 -0
- package/dist/hooks/useJoinRoomCanvas.d.ts +20 -0
- package/dist/hooks/useVideoElementDetector.d.ts +37 -0
- package/dist/index.d.ts +6 -0
- package/dist/main.d.ts +1 -0
- package/dist/noProcess.png +0 -0
- package/dist/pages/CallHome/CallHome.d.ts +4 -0
- package/dist/pages/CallHome/index.d.ts +2 -0
- package/dist/pages/Login/Login.d.ts +13 -0
- package/dist/pages/Login/index.d.ts +2 -0
- package/dist/pages/MobileLive/MobileLive.d.ts +13 -0
- package/dist/pages/MobileLive/components/DeviceSelectionModal.d.ts +31 -0
- package/dist/pages/MobileLive/components/DeviceSettingsModal.d.ts +42 -0
- package/dist/pages/MobileLive/components/MeetingListModal.d.ts +16 -0
- package/dist/pages/MobileLive/components/MobileControlBar.d.ts +29 -0
- package/dist/pages/MobileLive/components/MobileHeader.d.ts +34 -0
- package/dist/pages/MobileLive/components/PageIndicator.d.ts +29 -0
- package/dist/pages/MobileLive/components/UserVideoContainer.d.ts +31 -0
- package/dist/pages/MobileLive/components/VideoSwipeContainer.d.ts +33 -0
- package/dist/pages/MobileLive/hooks/useWakeLock.d.ts +52 -0
- package/dist/pages/MobileLive/index.d.ts +2 -0
- package/dist/pages/MobileLive/unocssUtils.d.ts +1 -0
- package/dist/pages/VoiceChatLive/VoiceChat.d.ts +4 -0
- package/dist/pages/VoiceChatLive/index.d.ts +2 -0
- package/dist/sdk/index.d.ts +40 -0
- package/dist/stores/activitytype.d.ts +48 -0
- package/dist/stores/call.d.ts +6 -0
- package/dist/stores/callStore.d.ts +225 -0
- package/dist/stores/commentChatUrl.d.ts +6 -0
- package/dist/stores/commentRtmpStats.d.ts +6 -0
- package/dist/stores/commentSocket.d.ts +26 -0
- package/dist/stores/counterStore.d.ts +9 -0
- package/dist/stores/currentUser.d.ts +6 -0
- package/dist/stores/drawingToolsStore.d.ts +62 -0
- package/dist/stores/guest.d.ts +8 -0
- package/dist/stores/liveInfo.d.ts +21 -0
- package/dist/stores/livepushcode.d.ts +37 -0
- package/dist/stores/sdkStore.d.ts +44 -0
- package/dist/types/sdk.d.ts +42 -0
- package/dist/utils/common.d.ts +10 -0
- package/dist/utils/env.d.ts +35 -0
- package/dist/utils/eventbus.d.ts +2 -0
- package/dist/utils/resource.d.ts +9 -0
- package/dist/utils/utiles.d.ts +19 -0
- package/dist/utils/variable.d.ts +25 -0
- package/package.json +81 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CallUser as ICallUser } from '@/stores/callStore';
|
|
2
|
+
import { FC } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* 通话用户组件属性接口
|
|
5
|
+
*/
|
|
6
|
+
interface CallUserProps {
|
|
7
|
+
/** 用户数据 */
|
|
8
|
+
user: ICallUser;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 通话用户组件 - 管理单个用户的状态和交互
|
|
12
|
+
*/
|
|
13
|
+
declare const CallUser: FC<CallUserProps>;
|
|
14
|
+
export default CallUser;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React, { Component, ReactNode } from 'react';
|
|
2
|
+
interface ErrorBoundaryProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
fallback?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
interface ErrorBoundaryState {
|
|
7
|
+
hasError: boolean;
|
|
8
|
+
error?: Error;
|
|
9
|
+
errorInfo?: React.ErrorInfo;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* 错误边界组件
|
|
13
|
+
* 捕获子组件中的JavaScript错误,并显示友好的错误界面
|
|
14
|
+
*/
|
|
15
|
+
declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
|
|
16
|
+
constructor(props: ErrorBoundaryProps);
|
|
17
|
+
static getDerivedStateFromError(error: Error): ErrorBoundaryState;
|
|
18
|
+
componentDidCatch(error: Error, errorInfo: React.ErrorInfo): void;
|
|
19
|
+
handleRetry: () => void;
|
|
20
|
+
render(): string | number | boolean | Iterable<React.ReactNode> | import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
}
|
|
22
|
+
export default ErrorBoundary;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
interface LoadingSpinnerProps {
|
|
3
|
+
/** 加载提示文本 */
|
|
4
|
+
tip?: string;
|
|
5
|
+
/** 是否显示加载状态 */
|
|
6
|
+
spinning?: boolean;
|
|
7
|
+
/** 子组件 */
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
/** 大小 */
|
|
10
|
+
size?: 'small' | 'default' | 'large';
|
|
11
|
+
/** 自定义样式类名 */
|
|
12
|
+
className?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 统一的加载组件
|
|
16
|
+
* 提供一致的加载体验
|
|
17
|
+
*/
|
|
18
|
+
declare const LoadingSpinner: FC<LoadingSpinnerProps>;
|
|
19
|
+
export default LoadingSpinner;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CallComponent 相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
import type { CallUser } from '@/stores/callStore';
|
|
5
|
+
export type { CallUser };
|
|
6
|
+
/**
|
|
7
|
+
* 用户操作回调接口
|
|
8
|
+
* 定义用户相关操作的回调函数类型,与CallUser组件期望的签名保持一致
|
|
9
|
+
*/
|
|
10
|
+
export interface UserActionCallbacks {
|
|
11
|
+
/** 更新用户名称 */
|
|
12
|
+
handleUpdateName: (userId: string, name: string) => void;
|
|
13
|
+
/** 移除用户 */
|
|
14
|
+
handleRemoveUser: (userId: string) => void;
|
|
15
|
+
/** 移至等候 */
|
|
16
|
+
handleMoveToWaiting: (userId: string) => void;
|
|
17
|
+
/** 处理麦克风封禁/解封 */
|
|
18
|
+
handleMicrophoneBan: (userId: string, isBanned: boolean) => void;
|
|
19
|
+
/** 处理麦克风开关 */
|
|
20
|
+
handleMicrophoneToggle: (userId: string, enabled: boolean) => void;
|
|
21
|
+
/** 处理摄像头封禁/解封 */
|
|
22
|
+
handleCameraBan: (userId: string, isBanned: boolean) => void;
|
|
23
|
+
/** 处理摄像头开关 */
|
|
24
|
+
handleCameraToggle: (userId: string, enabled: boolean) => void;
|
|
25
|
+
/** 邀请用户开启麦克风 */
|
|
26
|
+
handleInviteEnableMicrophone: (userId: string) => void;
|
|
27
|
+
/** 邀请用户开启摄像头 */
|
|
28
|
+
handleInviteEnableCamera: (userId: string) => void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* RTC配置接口
|
|
32
|
+
* 定义连麦相关的配置信息
|
|
33
|
+
*/
|
|
34
|
+
export interface RTCConfig {
|
|
35
|
+
/** 连麦是否开启 */
|
|
36
|
+
isCall: boolean;
|
|
37
|
+
/** 其他配置项... */
|
|
38
|
+
[key: string]: any;
|
|
39
|
+
}
|
|
40
|
+
export interface CallComponentState {
|
|
41
|
+
editingUserId: string | null;
|
|
42
|
+
isLoading: boolean;
|
|
43
|
+
isRTCConfigLoading: boolean;
|
|
44
|
+
}
|
|
45
|
+
export interface ConfigUpdateParams {
|
|
46
|
+
allow_guests_cancel_muted?: number;
|
|
47
|
+
enter_muted?: number;
|
|
48
|
+
lock_mode?: number;
|
|
49
|
+
waiting_mode?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface BanOptions {
|
|
52
|
+
audio?: boolean;
|
|
53
|
+
video?: boolean;
|
|
54
|
+
isDisabled?: boolean;
|
|
55
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* 邀请确认弹窗的 Props 接口
|
|
4
|
+
*/
|
|
5
|
+
export interface InviteConfirmModalProps {
|
|
6
|
+
/** 弹窗是否可见 */
|
|
7
|
+
visible: boolean;
|
|
8
|
+
/** 邀请类型:麦克风或摄像头 */
|
|
9
|
+
inviteType: 'microphone' | 'camera';
|
|
10
|
+
/** 邀请发起人的昵称 */
|
|
11
|
+
inviterName: string;
|
|
12
|
+
/** 确认回调 - 用户点击同意 */
|
|
13
|
+
onConfirm: () => void;
|
|
14
|
+
/** 拒绝回调 - 用户点击拒绝 */
|
|
15
|
+
onReject: () => void;
|
|
16
|
+
/** 加载状态 - 处理用户选择时显示 */
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
/** 是否为移动端 - 用于适配移动端展示(全屏/按钮布局等) */
|
|
19
|
+
isMobile?: boolean;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 邀请确认弹窗组件
|
|
23
|
+
*
|
|
24
|
+
* 当主持人邀请嘉宾开启麦克风或摄像头时显示,
|
|
25
|
+
* 提供同意/拒绝选项供嘉宾选择
|
|
26
|
+
*/
|
|
27
|
+
declare const InviteConfirmModal: React.FC<InviteConfirmModalProps>;
|
|
28
|
+
export default InviteConfirmModal;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 邀请确认数据接口
|
|
3
|
+
*/
|
|
4
|
+
export interface InviteConfirmData {
|
|
5
|
+
/** 邀请类型 */
|
|
6
|
+
type: 'microphone' | 'camera';
|
|
7
|
+
/** 邀请发起人用户ID */
|
|
8
|
+
fromUserId: string;
|
|
9
|
+
/** 邀请发起人昵称 */
|
|
10
|
+
fromUserName: string;
|
|
11
|
+
/** 邀请动作 */
|
|
12
|
+
action: 'enable_microphone' | 'enable_camera';
|
|
13
|
+
/** 邀请时间戳 */
|
|
14
|
+
timestamp: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 邀请确认 Hook 返回值接口
|
|
18
|
+
*/
|
|
19
|
+
export interface UseInviteConfirmReturn {
|
|
20
|
+
/** 当前邀请数据 */
|
|
21
|
+
inviteData: InviteConfirmData | null;
|
|
22
|
+
/** 弹窗是否可见 */
|
|
23
|
+
visible: boolean;
|
|
24
|
+
/** 是否正在处理用户选择 */
|
|
25
|
+
loading: boolean;
|
|
26
|
+
/** 显示邀请确认弹窗 */
|
|
27
|
+
showInviteConfirm: (data: InviteConfirmData) => void;
|
|
28
|
+
/** 隐藏邀请确认弹窗 */
|
|
29
|
+
hideInviteConfirm: () => void;
|
|
30
|
+
/** 设置加载状态 */
|
|
31
|
+
setLoading: (loading: boolean) => void;
|
|
32
|
+
/** 清除邀请数据 */
|
|
33
|
+
clearInviteData: () => void;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 邀请确认管理 Hook
|
|
37
|
+
*
|
|
38
|
+
* 用于管理邀请确认弹窗的显示状态和相关数据
|
|
39
|
+
*/
|
|
40
|
+
export declare const useInviteConfirm: () => UseInviteConfirmReturn;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RtcJoomRoom 模块统一导出
|
|
3
|
+
*
|
|
4
|
+
* 该模块提供 RTC 房间相关的组件和 Hooks
|
|
5
|
+
*/
|
|
6
|
+
import RtcJoomRoom from './RtcJoomRoom';
|
|
7
|
+
export default RtcJoomRoom;
|
|
8
|
+
export { default as useMessageReceiver } from './useMessageReceiver';
|
|
9
|
+
export { default as useMessageSender } from './useMessageSender';
|
|
10
|
+
export { default as useRoomMessageHandler } from './useRoomMessageHandler';
|
|
11
|
+
export type { BaseMessage, CallUser, ChangeUserMessageData, MediaMessageData, MessageHandler, MessageQueueItem, MessageReceiverOptions, MessageSendOptions, MessageSendResult, MuteMessageData, PeerToPeerMessage, RoomBroadcastMessage, RoomMessageData, RoomMessageDataHandler, RoomMessageDataUnion, RoomMessageEvent, RoomMessageHandler, UnifiedMessageEvent, UseMessageReceiverReturn, UseRoomMessageHandlerReturn, UserMessageEvent, UserMessageHandler, UsersMessageData, WaitingModeMessageData, WaitingModeState, } from './types';
|
|
12
|
+
export { MessagePriority, MessageSource, MessageType, RoomMessageType, } from './types';
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RTC 消息系统统一类型定义
|
|
3
|
+
*
|
|
4
|
+
* 本文件整合了所有与 RTC 消息相关的类型定义,包括:
|
|
5
|
+
* - 消息来源和类型枚举
|
|
6
|
+
* - 消息事件接口
|
|
7
|
+
* - 消息处理器类型
|
|
8
|
+
* - 消息发送相关类型
|
|
9
|
+
* - Hook 返回值接口
|
|
10
|
+
*
|
|
11
|
+
* 遵循 AIGC React/TS 智能开发规范,提供类型安全的消息处理能力
|
|
12
|
+
*/
|
|
13
|
+
import { CallUser, WaitingModeState } from '@/stores/callStore';
|
|
14
|
+
/**
|
|
15
|
+
* 消息来源类型枚举
|
|
16
|
+
*
|
|
17
|
+
* 区分消息的来源,便于统一处理和路由
|
|
18
|
+
*/
|
|
19
|
+
export declare enum MessageSource {
|
|
20
|
+
/** 房间广播消息 - 来自房间的广播消息 */
|
|
21
|
+
ROOM = "room",
|
|
22
|
+
/** 用户点对点消息 - 来自特定用户的私聊消息 */
|
|
23
|
+
USER = "user"
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 房间消息类型枚举
|
|
27
|
+
*
|
|
28
|
+
* 定义了所有支持的房间消息类型,便于类型检查和扩展
|
|
29
|
+
*/
|
|
30
|
+
export declare enum RoomMessageType {
|
|
31
|
+
/** 静音控制消息 - 主持人控制全体静音/取消静音 */
|
|
32
|
+
MUTE = "mute",
|
|
33
|
+
/** 离开房间消息 - 主持人解散房间 */
|
|
34
|
+
LEAVE = "leave",
|
|
35
|
+
/** 等候模式消息 - 用户准入或移至等候状态 */
|
|
36
|
+
WAITING_MODE = "waiting_mode",
|
|
37
|
+
/** 等待消息 - 通用等待状态消息 */
|
|
38
|
+
WAIT = "wait",
|
|
39
|
+
/** 用户变更消息 - 用户信息变更通知 */
|
|
40
|
+
CHANGE_USER = "change_user",
|
|
41
|
+
/** 媒体消息 - 音频/视频状态变更 */
|
|
42
|
+
MEDIA = "media",
|
|
43
|
+
/** 配置变更消息 - 主持人变更房间配置 */
|
|
44
|
+
CHANGE_CONFIG = "change_config",
|
|
45
|
+
/** 用户列表消息 - 主持人下发所有用户列表 */
|
|
46
|
+
USERS = "users"
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* 消息发送类型枚举
|
|
50
|
+
*/
|
|
51
|
+
export declare enum MessageType {
|
|
52
|
+
/** 房间广播消息 */
|
|
53
|
+
ROOM_BROADCAST = "room_broadcast",
|
|
54
|
+
/** 点对点消息 */
|
|
55
|
+
PEER_TO_PEER = "peer_to_peer"
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 消息优先级枚举
|
|
59
|
+
*/
|
|
60
|
+
export declare enum MessagePriority {
|
|
61
|
+
LOW = 0,
|
|
62
|
+
NORMAL = 1,
|
|
63
|
+
HIGH = 2,
|
|
64
|
+
URGENT = 3
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 静音消息数据接口
|
|
68
|
+
*
|
|
69
|
+
* 定义静音操作相关的数据结构
|
|
70
|
+
*/
|
|
71
|
+
export interface MuteMessageData {
|
|
72
|
+
/** 是否静音 - true: 静音, false: 取消静音 */
|
|
73
|
+
is_muted?: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 媒体消息数据接口
|
|
77
|
+
*
|
|
78
|
+
* 定义媒体状态变更相关的数据结构
|
|
79
|
+
*/
|
|
80
|
+
export interface MediaMessageData {
|
|
81
|
+
/** 媒体类型 - 音频或视频 */
|
|
82
|
+
media_type?: 'audio' | 'video';
|
|
83
|
+
/** 媒体状态 - 0: 关闭, 1: 开启 */
|
|
84
|
+
media_state?: 0 | 1;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 用户列表消息数据接口
|
|
88
|
+
*
|
|
89
|
+
* 定义主持人下发所有用户列表相关的数据结构
|
|
90
|
+
*/
|
|
91
|
+
export interface UsersMessageData {
|
|
92
|
+
users: CallUser[];
|
|
93
|
+
rtc_userid: string;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 等候模式消息数据接口
|
|
97
|
+
*
|
|
98
|
+
* 定义用户等候状态变更相关的数据结构
|
|
99
|
+
*/
|
|
100
|
+
export interface WaitingModeMessageData {
|
|
101
|
+
/** RTC 用户 ID - 目标用户的唯一标识 */
|
|
102
|
+
rtc_userid?: string;
|
|
103
|
+
/** 等候模式状态 - 用户的当前等候状态 */
|
|
104
|
+
waiting_mode_state?: WaitingModeState;
|
|
105
|
+
/** 用户列表 */
|
|
106
|
+
users: CallUser[];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 用户变更消息数据接口
|
|
110
|
+
*
|
|
111
|
+
* 定义用户信息变更相关的数据结构
|
|
112
|
+
*/
|
|
113
|
+
export interface ChangeUserMessageData {
|
|
114
|
+
/** 用户信息 - CallUser 的部分字段,具体包含哪些字段取决于消息类型 */
|
|
115
|
+
user?: Partial<CallUser>;
|
|
116
|
+
users?: Partial<CallUser>[];
|
|
117
|
+
/** 变更类型 - 指示具体的变更操作类型 */
|
|
118
|
+
change_type?: RoomMessageType;
|
|
119
|
+
/** 操作类型 - 具体的用户操作动作(如 name_change) */
|
|
120
|
+
action?: string;
|
|
121
|
+
/** 用户ID - 发生变更的用户标识 */
|
|
122
|
+
user_id?: string;
|
|
123
|
+
/** 旧名称 - 用户变更前的昵称 */
|
|
124
|
+
old_name?: string;
|
|
125
|
+
/** 新名称 - 用户变更后的昵称 */
|
|
126
|
+
new_name?: string;
|
|
127
|
+
/** 时间戳 - 消息发送时间 */
|
|
128
|
+
timestamp?: number;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* 房间消息数据联合类型
|
|
132
|
+
*/
|
|
133
|
+
export type RoomMessageDataUnion = MuteMessageData | MediaMessageData | WaitingModeMessageData | ChangeUserMessageData | UsersMessageData | Record<string, unknown>;
|
|
134
|
+
/**
|
|
135
|
+
* 统一消息事件接口
|
|
136
|
+
*
|
|
137
|
+
* 标准化不同来源消息的数据结构
|
|
138
|
+
*/
|
|
139
|
+
export interface UnifiedMessageEvent {
|
|
140
|
+
/** 消息来源类型 */
|
|
141
|
+
source: MessageSource;
|
|
142
|
+
/** 发送者用户ID */
|
|
143
|
+
userId: string;
|
|
144
|
+
/** 消息内容(JSON字符串或普通字符串) */
|
|
145
|
+
message: string;
|
|
146
|
+
/** 接收时间戳 */
|
|
147
|
+
timestamp: number;
|
|
148
|
+
/** 原始事件数据(用于调试和扩展) */
|
|
149
|
+
rawEvent?: any;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 房间消息事件接口
|
|
153
|
+
*
|
|
154
|
+
* 房间广播消息的标准格式,匹配火山引擎 RTC SDK 官方定义
|
|
155
|
+
* @see {@link https://www.volcengine.com/docs/6348/104479#onroommessagereceived}
|
|
156
|
+
*/
|
|
157
|
+
export interface RoomMessageEvent {
|
|
158
|
+
/** 发送者用户ID */
|
|
159
|
+
userId: string;
|
|
160
|
+
/** 消息内容 - 支持任意类型数据 */
|
|
161
|
+
message: any;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* 用户消息事件接口
|
|
165
|
+
*
|
|
166
|
+
* 用户点对点消息的标准格式,匹配火山引擎 RTC SDK 官方定义
|
|
167
|
+
* @see {@link https://www.volcengine.com/docs/6348/104479#onusermessagereceived}
|
|
168
|
+
*/
|
|
169
|
+
export interface UserMessageEvent {
|
|
170
|
+
/** 发送者用户ID */
|
|
171
|
+
userId: string;
|
|
172
|
+
/** 消息内容 - 点对点文本消息 */
|
|
173
|
+
message: string;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* 房间消息数据接口
|
|
177
|
+
*/
|
|
178
|
+
export interface RoomMessageData {
|
|
179
|
+
/** 消息类型 */
|
|
180
|
+
type: RoomMessageType;
|
|
181
|
+
/** 消息数据 */
|
|
182
|
+
data?: RoomMessageDataUnion;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* 基础消息接口
|
|
186
|
+
*/
|
|
187
|
+
export interface BaseMessage {
|
|
188
|
+
/** 消息唯一标识 */
|
|
189
|
+
id?: string;
|
|
190
|
+
/** 消息类型 */
|
|
191
|
+
type: string;
|
|
192
|
+
/** 消息数据 */
|
|
193
|
+
data: Record<string, any>;
|
|
194
|
+
/** 时间戳 */
|
|
195
|
+
timestamp?: number;
|
|
196
|
+
/** 消息优先级 */
|
|
197
|
+
priority?: MessagePriority;
|
|
198
|
+
/** 是否支持重试 */
|
|
199
|
+
retry?: boolean;
|
|
200
|
+
/** 最大重试次数 */
|
|
201
|
+
maxRetries?: number;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* 房间广播消息接口
|
|
205
|
+
*/
|
|
206
|
+
export interface RoomBroadcastMessage extends BaseMessage {
|
|
207
|
+
messageType: MessageType.ROOM_BROADCAST;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* 点对点消息接口
|
|
211
|
+
*/
|
|
212
|
+
export interface PeerToPeerMessage extends BaseMessage {
|
|
213
|
+
messageType: MessageType.PEER_TO_PEER;
|
|
214
|
+
/** 目标用户ID */
|
|
215
|
+
targetUserId: string;
|
|
216
|
+
/** 是否为二进制消息 */
|
|
217
|
+
isBinary?: boolean;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* 消息发送结果接口
|
|
221
|
+
*/
|
|
222
|
+
export interface MessageSendResult {
|
|
223
|
+
success: boolean;
|
|
224
|
+
messageId?: string;
|
|
225
|
+
error?: {
|
|
226
|
+
code: string;
|
|
227
|
+
message: string;
|
|
228
|
+
retryable?: boolean;
|
|
229
|
+
};
|
|
230
|
+
timestamp: number;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* 消息发送选项接口
|
|
234
|
+
*
|
|
235
|
+
* 配置消息发送的各种选项,包括超时、重试等
|
|
236
|
+
*/
|
|
237
|
+
export interface MessageSendOptions {
|
|
238
|
+
/** 发送超时时间(ms) */
|
|
239
|
+
timeout?: number;
|
|
240
|
+
/** 重试次数 */
|
|
241
|
+
retryCount?: number;
|
|
242
|
+
/** 重试延迟(ms) */
|
|
243
|
+
retryDelay?: number;
|
|
244
|
+
/** 发送进度回调 */
|
|
245
|
+
onProgress?: (progress: number) => void;
|
|
246
|
+
/** 重试回调 */
|
|
247
|
+
onRetry?: (attempt: number) => void;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* 消息队列项接口
|
|
251
|
+
*
|
|
252
|
+
* 内部使用的消息队列项,包含消息、选项和回调
|
|
253
|
+
*/
|
|
254
|
+
export interface MessageQueueItem {
|
|
255
|
+
message: RoomBroadcastMessage | PeerToPeerMessage;
|
|
256
|
+
options?: MessageSendOptions;
|
|
257
|
+
resolve: (result: MessageSendResult) => void;
|
|
258
|
+
reject: (error: Error) => void;
|
|
259
|
+
attempts: number;
|
|
260
|
+
maxAttempts: number;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* 统一消息处理器类型
|
|
264
|
+
*/
|
|
265
|
+
export type MessageHandler = (event: UnifiedMessageEvent) => void;
|
|
266
|
+
/**
|
|
267
|
+
* 房间消息处理器类型
|
|
268
|
+
*/
|
|
269
|
+
export type RoomMessageHandler = (event: RoomMessageEvent) => void;
|
|
270
|
+
/**
|
|
271
|
+
* 用户消息处理器类型
|
|
272
|
+
*/
|
|
273
|
+
export type UserMessageHandler = (event: UserMessageEvent) => void;
|
|
274
|
+
/**
|
|
275
|
+
* 房间消息数据处理器类型
|
|
276
|
+
*/
|
|
277
|
+
export type RoomMessageDataHandler = (data: RoomMessageData, userId: string) => void;
|
|
278
|
+
/**
|
|
279
|
+
* 消息接收器配置选项
|
|
280
|
+
*/
|
|
281
|
+
export interface MessageReceiverOptions {
|
|
282
|
+
/** 是否启用房间消息接收 */
|
|
283
|
+
enableRoomMessages?: boolean;
|
|
284
|
+
/** 是否启用用户消息接收 */
|
|
285
|
+
enableUserMessages?: boolean;
|
|
286
|
+
/** 是否启用消息去重 */
|
|
287
|
+
enableDeduplication?: boolean;
|
|
288
|
+
/** 去重时间窗口(ms) */
|
|
289
|
+
deduplicationWindow?: number;
|
|
290
|
+
/** 是否启用调试日志 */
|
|
291
|
+
enableDebugLog?: boolean;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* 消息接收器返回值接口
|
|
295
|
+
*/
|
|
296
|
+
export interface UseMessageReceiverReturn {
|
|
297
|
+
/** 统一消息处理器 */
|
|
298
|
+
handleMessage: MessageHandler;
|
|
299
|
+
/** 房间消息处理器 */
|
|
300
|
+
handleRoomMessageReceived: RoomMessageHandler;
|
|
301
|
+
/** 用户消息处理器 */
|
|
302
|
+
handleUserMessageReceived: UserMessageHandler;
|
|
303
|
+
/** 房间消息处理器实例 */
|
|
304
|
+
roomMessageHandler: UseRoomMessageHandlerReturn;
|
|
305
|
+
/** 消息统计信息 */
|
|
306
|
+
stats: {
|
|
307
|
+
/** 接收的房间消息数量 */
|
|
308
|
+
roomMessagesReceived: number;
|
|
309
|
+
/** 接收的用户消息数量 */
|
|
310
|
+
userMessagesReceived: number;
|
|
311
|
+
/** 过滤的重复消息数量 */
|
|
312
|
+
duplicateMessagesFiltered: number;
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* 房间消息处理器返回值接口
|
|
317
|
+
*/
|
|
318
|
+
export interface UseRoomMessageHandlerReturn {
|
|
319
|
+
/** 房间消息接收处理器 */
|
|
320
|
+
handleRoomMessageReceived: (event: RoomMessageEvent) => void;
|
|
321
|
+
/** 具体消息处理器集合 */
|
|
322
|
+
handlers: {
|
|
323
|
+
/** 静音消息处理器 */
|
|
324
|
+
handleMuteMessage: (data: RoomMessageData, userId: string) => void;
|
|
325
|
+
/** 离开房间消息处理器 */
|
|
326
|
+
handleLeaveMessage: (data: RoomMessageData, userId: string) => void;
|
|
327
|
+
/** 等候模式消息处理器 */
|
|
328
|
+
handleWaitingModeMessage: (data: RoomMessageData, userId: string) => void;
|
|
329
|
+
/** 用户变更消息处理器 */
|
|
330
|
+
handleChangeUserMessage: (data: RoomMessageData, userId: string) => void;
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
export type { CallUser, WaitingModeState, };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { MessageHandler, MessageReceiverOptions, UseMessageReceiverReturn } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 统一消息接收器 Hook
|
|
4
|
+
*
|
|
5
|
+
* 提供统一的消息接收和处理能力,整合房间消息和用户消息
|
|
6
|
+
*
|
|
7
|
+
* @param messageHandler - 统一消息处理器
|
|
8
|
+
* @param options - 配置选项
|
|
9
|
+
* @returns 消息接收器实例
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const messageReceiver = useMessageReceiver(
|
|
14
|
+
* (event) => {
|
|
15
|
+
* console.log(`收到${event.source}消息:`, event.message);
|
|
16
|
+
* if (event.source === MessageSource.ROOM) {
|
|
17
|
+
* // 处理房间消息
|
|
18
|
+
* } else if (event.source === MessageSource.USER) {
|
|
19
|
+
* // 处理用户消息
|
|
20
|
+
* }
|
|
21
|
+
* },
|
|
22
|
+
* {
|
|
23
|
+
* enableRoomMessages: true,
|
|
24
|
+
* enableUserMessages: true,
|
|
25
|
+
* enableDeduplication: true,
|
|
26
|
+
* }
|
|
27
|
+
* );
|
|
28
|
+
*
|
|
29
|
+
* // 在 RTC 客户端中使用
|
|
30
|
+
* const rtcClient = new RtcClient({
|
|
31
|
+
* handleRoomMessageReceived: messageReceiver.handleRoomMessageReceived,
|
|
32
|
+
* handleUserMessgeReceived: messageReceiver.handleUserMessageReceived,
|
|
33
|
+
* // ... 其他配置
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare const useMessageReceiver: (messageHandler?: MessageHandler, options?: MessageReceiverOptions) => UseMessageReceiverReturn;
|
|
38
|
+
export default useMessageReceiver;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { MessageType, MessagePriority, MessageSendResult, MessageSendOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* 消息发送Hook - 统一管理RTC消息发送
|
|
4
|
+
* 支持房间广播和点对点两种消息发送模式
|
|
5
|
+
* 提供重试机制、错误处理、消息队列等高级功能
|
|
6
|
+
*/
|
|
7
|
+
export declare const useMessageSender: () => {
|
|
8
|
+
sendRoomBroadcast: (type: string, data: Record<string, any>, options?: MessageSendOptions) => Promise<MessageSendResult>;
|
|
9
|
+
sendPeerToPeer: (targetUserId: string, type: string, data: Record<string, any>, options?: MessageSendOptions & {
|
|
10
|
+
isBinary?: boolean;
|
|
11
|
+
}) => Promise<MessageSendResult>;
|
|
12
|
+
sendBatch: (messages: Array<{
|
|
13
|
+
messageType: MessageType;
|
|
14
|
+
targetUserId?: string;
|
|
15
|
+
type: string;
|
|
16
|
+
data: Record<string, any>;
|
|
17
|
+
options?: MessageSendOptions;
|
|
18
|
+
}>) => Promise<MessageSendResult[]>;
|
|
19
|
+
clearQueue: () => void;
|
|
20
|
+
getQueueStatus: () => {
|
|
21
|
+
queueLength: number;
|
|
22
|
+
isProcessing: boolean;
|
|
23
|
+
};
|
|
24
|
+
generateMessageId: () => string;
|
|
25
|
+
MessageType: typeof MessageType;
|
|
26
|
+
MessagePriority: typeof MessagePriority;
|
|
27
|
+
};
|
|
28
|
+
export default useMessageSender;
|