分布式网络会议客户端概要设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章 需求分析
能在客户端的简单调用下,完成一整套会议功能,包括: 1. 即时会议创建; 2. 加入即时会议; 3. 退出即时会议; 4. 预约会议创建; 5. 删除预约会议; 6. 修改预约会议; 7. 加入预约会议; 8. 退出预约会议;
9. 能在收到邀请后加入会议(无视所在域); 10. 查看所有与会者视频; 11. 查看某个与会者的视频。
第二章 框架结构
2.1 总体框架
会议系统接口类提供给客户端,会议管理界面、召开会议界面、数据逻辑管理模块及Dll 接口组成会议系统功能支撑库,ACPS 、ACCC 、ACP 是会议系统的底层模块,ACCS 、MCU 组成会议系统服务端。
2.2 内部框架
第三章模块分析
3.1 会议接口类
a. 加载进入网络会议模块库,返回值:0:成功;否则,失败。
int InitConferenceModule(
LPCTSTR szServerIP, //服务器IP
LPCTSTR szUserID, //用户ID
LPCTSTR szUserName, //用户名
UINT uType, //进入会议系统时为0,加入会议时为1
CSETUSER fSetUser, //设置选择与会人员列表回调
HWND hClient, //接收消息的窗口句柄
LPCTSTR szRoomID = NULL, //会议室ID
LPCTSTR szRoomName = NULL, //会议室名
LPCTSTR szConferenceID = NULL,//会议ID
LPCTSTR szConferenceName = NULL, //会议名
LPCTSTR szBeginTime = NULL, //会议开始时间
LPCTSTR szEndTime = NULL); //会议结束时间
b. 卸载网络会议模块库
void UnInitConferenceModule(void);
3.2 Dll接口模块
与会议接口类相对应,同时拥有数据逻辑类指针。
InitNOIConf,内部封装数据逻辑类的初始化
UnInitNOIConf,内部封装数据逻辑类的析构
3.3 数据逻辑类
Dll中的核心,单一实例,存储当前服务器、会议、会议室及相关人员的状态信息,直接调度各个界面,是与底层ACPS联系的唯一途径,也是与客户端联系的唯一桥梁。
进入会议管理时,首先启动该类,由该类初始化底层库,初始化成功后,向会议服务器发出请求,获得界面所需的相应数据,之后启动我的会议室界面,我的会议室界面从该类获取数据信息。
加入会议时,也要先启动该类,由该类初始化底层库,初始化成功后,向会议服务器发出请求,获得界面所需的相应数据,之后启动会议召开界面,会议召开界面从该类获取数据,当用户在开会进行各种操作时,都是通过该类来调用底层ACPS以实现各种功能。
3.4 我的会议室界面类
用户刚进入会议系统时的界面,显示当前用户可参加的所有会议(即时会议与预约会议),可以在这里创建即时会议,也可由此转向所有会议室界面。
3.5 所有会议室界面类
界面左边显示所在会议服务器的会议室列表、可参加的所有会议列表,可由此转向我的会议室界面。
界面右边有两个从页面,同一时刻只能显示一个:当点击某一会议室时,显示预约会议列表,用户在这里可以对预约会议进行创建、删除、修改操作;当点击创建按钮时,显示预约会议创建界面。
3.6 会议召开界面类
开会界面,显示会议信息,人员状态,可进行各种会议中操作,如察看视频,加入与会者,踢除与会者。
第四章界面设计
4.1 我的会议室
4.2 所有会议室
4.5 会议召开界面
第五章流程分析
5.1 创建会议流程
5.2 加入会议流程
第六章接口说明
6.1 客户端需要的接口以类的形式提供,见
MconferenceControl类。
a. 加载网络会议模块库,返回值:0:成功;否则,失败。
int InitConferenceModule(
LPCTSTR szServerIP, //服务器IP
LPCTSTR szUserID, //用户ID
LPCTSTR szUserName, //用户名
UINT uType, //进入会议系统时为0,加入会议时为1
CSETUSER fSetUser, //设置选择与会人员列表回调
HWND hClient, //接收消息的窗口句柄
LPCTSTR szRoomID = NULL, //会议室ID
LPCTSTR szRoomName = NULL, //会议室名
LPCTSTR szConferenceID = NULL,//会议ID
LPCTSTR szConferenceName = NULL, //会议名
LPCTSTR szBeginTime = NULL, //会议开始时间
LPCTSTR szEndTime = NULL); //会议结束时间
b. 卸载网络会议模块库
void UnInitConferenceModule(void);
6.2 需要客户端提供的接口(Windows message):
a.通过回调函数设置与会人员列表
typedef void (* CSETUSER)(vector<AC_UserInfo> &);
b.设置消息类型WM_FREE_CONFERENCE USER + 3000
具体数值需商定
第七章数据结构
7.1与会者信息结构定义
typedef struct _tagAC_UserInfo
{
UINT uUserId; // 用户SIP号60000123
char szUserName[32]; // 用户名称
UINT uUserState;
UINT uACSId;
_tagAC_UserInfo()
{
uUserId = 0;
memset(szUserName, 0, 32);
uUserState = 0;
uACSId = 0;
}
} AC_UserInfo, * LPAC_UserInfo;
7.2宏定义
#define WEBCONF_ENTER 0 //进入会议系统
#define WEBCONF_JOIN 1 //加入会议
#define WM_FREE_CONFERENCE WM_USER + 3000//用于通知用户卸载会议模块
7.3回调函数定义
typedef void (*CSETUSER)(vector<AC_UserInfo> &); //用于填装与会者列表
第八章客户端调用说明
1.客户端启动时初始化会议接口类。
2.客户端创建会议时,客户端点击创建会议按钮调用接口类函数InitConferenceModule(LPCTSTR szUserID, LPCTSTR szUserName, LPCTSTR szServerIP, UINT uType, CsetUser fSetUser, HWND hClient),uType为0。
3.创建会议时NOIConf.dll调用回调函数fSetUser(vector< AC_UserInfo > &)来添加会者列表。
4.客户端选择好与会者列表后调用接口类函数SetUserList(LPCTSTR szUserList) [ szUserList :UserID1*UserName1#UserID2*UserName2#......#UserIDn*UserNamen] (也可以自己在其他地方定义)
5.客户端收到加入会议的邀请后点击确定按钮调用接口类函数InitConferenceModule(LPCTSTR szServerIP, LPCTSTR szUserID, LPCTSTR szUserName, UINT uType, CSETUSER fSetUser, HWND hClient, LPCTSTR szRoomID, LPCTSTR szRoomName, LPCTSTR szConferenceID, LPCTSTR szConferenceName, LPCTSTR szBeginTime, LPCTSTR szEndTime),uType为1。
6.退出会议时NOIConf.dll通过向窗口句柄hClient发消息WM_FREE_CONFERENCE通知客户端调用接口类函数UnInitConferenceModule()来卸载NOIConf.dll。
7.。