视频呼叫业务逻辑主要实现两个终端PC、手机、Pad等之间的通话请求流程控制包括请求Request、回复Reply、开始Start以及结束Finish等过程可以形象理解为打电话的流程拨号、等待、通话、挂断。
以下以AnyChat视频呼叫业务逻辑为例说明
1、业务逻辑流程图
请参考http://bbs.anychat.cn/forum.php?mod=viewthread&tid=150&extra=page%3D1
2、API接口及常量定义
客户端相关API接口及事件回调
//视频通话消息通知回调函数定义
typedefvoid (CALLBACK * BRAC_VideoCallEvent_CallBack)(DWORD dwEventType, DWORDdwUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr,LPVOID lpUserValue);
//设置视频通话消息通知回调函数
BRAC_APIDWORD BRAC_SetVideoCallEventCallBack(BRAC_VideoCallEvent_CallBack lpFunction,LPVOID lpUserValue);
//视频呼叫事件控制请求、回复、挂断等
BRAC_APIDWORD BRAC_VideoCallControl(DWORD dwEventType, DWORD dwUserId, DWORDdwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);
服务器相关API接口及事件回调
//视频通话消息通知回调函数定义
typedefDWORD (CALLBACK * BRAS_OnVideoCallEvent_CallBack)(DWORD dwEventType, DWORDdwSrcUserId, DWORD dwTarUserId, DWORD dwErrorCode, DWORD dwFlags, DWORDdwParam, LPCTSTR lpUserStr, LPVOID lpUserValue);
//设置视频通话消息通知回调函数
BRAS_APIDWORD BRAS_SetOnVideoCallEventCallBack(BRAS_OnVideoCallEvent_CallBacklpFunction, LPVOID lpUserValue=NULL);
//视频呼叫事件控制请求、回复、挂断等
BRAS_APIDWORD BRAS_VideoCallControl(DWORD dwEventType, DWORD dwUserId, DWORDdwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);
常量定义
/视频呼叫事件类型定义APIBRAS_VideoCallControl传入参数、OnVideoCallEvent回调参数
#defineBRAS_VIDEOCALL_EVENT_REQUEST 1 ///< 呼叫请求
#defineBRAS_VIDEOCALL_EVENT_REPLY 2 ///< 呼叫请求回复
#defineBRAS_VIDEOCALL_EVENT_START 3 ///< 视频呼叫会话开始事件
#defineBRAS_VIDEOCALL_EVENT_FINISH 4 ///< 挂断结束呼叫会话
3、相关说明
3.1、客户端APIBRAC_VideoCallControl和回调函数BRAC_VideoCallEvent_CallBack中的dwUserId均为对方被呼叫方的用户ID
3.2、被呼叫方拒绝通话时发送回复Reply指令dwErrorCode=100104
3.3、被呼叫方同意通话时发送回复Reply指令dwErrorCode=0然后服务器会向双方发送通话开始Start指令dwParam=RoomId房间号由核心服务器自动分配
3.4、结束通话时任何一方包括业务服务器均可以发送结束Finish指令然后服务器会向双方发送通话结束Finish指令
3.5、业务服务器可干预呼叫流程在BRAS_OnVideoCallEvent_CallBack收到呼叫请求指令后返回0表示允许呼叫否则为出错代码不允许呼叫在会话过程中可以发送结束Finish指令强制挂断指定用户的通话
3.6、API接口中的dwParam整型、lpUserStr字符串均为用户自定义用途
3.7、一个用户同时只能发起一路呼叫请求也同时只能被一个用户呼叫
3.8、视频呼叫业务流程可以脱离业务服务器由核心服务器独立支撑可以不需要在服务器端进行二次开发。
&4&通讯跨平台性为各种终端之间的交流提供了可能性