视频呼叫事务逻辑首要完成两个终端(PC、手机、Pad等)之间的通话恳求流程操控,包含恳求(Request)、回复(Reply)、开端(Start)以及完毕(Finish)等进程,能够形象理解为打电话的流程:拨号、等候、通话、挂断。
以下以AnyChat视频呼叫事务逻辑为例说明:
1、事务逻辑流程图
请参阅http://bbs.anychat.cn/forum.php?mod=viewthread&tid=150&extra=page=1
2、API接口及常量界说
客户端有关API接口及事情回调:
// 视频通话音讯告诉回调函数界说
typedef void (CALLBACK *BRAC_VideoCallEvent_CallBack)(DWORD dwEventType, DWORD dwUserId, DWORDdwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr, LPVOIDlpUserValue);
// 设置视频通话音讯告诉回调函数
BRAC_API DWORDBRAC_SetVideoCallEventCallBack(BRAC_VideoCallEvent_CallBack lpFunction, LPVOIDlpUserValue);
// 视频呼叫事情操控(恳求、回复、挂断等)
BRAC_API DWORDBRAC_VideoCallControl(DWORD dwEventType, DWORD dwUserId, DWORD dwErrorCode,DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);
服务器有关API接口及事情回调:
// 视频通话音讯告诉回调函数界说
typedef DWORD (CALLBACK *BRAS_OnVideoCallEvent_CallBack)(DWORD dwEventType, DWORD dwSrcUserId, DWORDdwTarUserId, DWORD dwErrorCode, DWORD dwFlags, DWORD dwParam, LPCTSTRlpUserStr, LPVOID lpUserValue);
// 设置视频通话音讯告诉回调函数
BRAS_API DWORDBRAS_SetOnVideoCallEventCallBack(BRAS_OnVideoCallEvent_CallBack lpFunction,LPVOID lpUserValue=NULL);
// 视频呼叫事情操控(恳求、回复、挂断等)
BRAS_API DWORDBRAS_VideoCallControl(DWORD dwEventType, DWORD dwUserId, DWORD dwErrorCode,DWORD dwFlags, DWORD dwParam, LPCTSTR lpUserStr);
常量界说
/ 视频呼叫事情类型界说(API:BRAS_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、客户端API(BRAC_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、视频呼叫事务流程能够脱离事务服务器,由中心服务器独立支持,能够不需要在服务器端进行二次开发。