用微软的实时通信API集成丰富的客户端通信
2010-07-15 20:45:25 来源:WEB开发网即时消息事件
使用IRTCMessagingEvent可在会话参与者中传递即时消息。当一个消息事件产生时,应用程序必须获得会话和事件类型,得到相关会话中的参与者信息,以便能将消息传递给适当一方。事件处理者也能处理会话状态的改变。
HRESULT CAVDConfDlg::OnRTCMessagingEvent(IRTCMessagingEvent *pEvent)
{
...
hr = pEvent->get_Session(&pSession);
hr = pEvent->get_EventType(&enType);
hr = pEvent->get_Participant(&pParticipant);
if (enType == RTCMSET_MESSAGE)
{
hr = pEvent->get_MessageHeader(&bstrContentType);
hr = pEvent->get_Message(&bstrMessage);
// Deliver the message to the session window
if (m_cMessageDlg)
m_cMessageDlg.DeliverMessage(pParticipant, bstrContentType,
bstrMessage);
}
else if (enType == RTCMSET_STATUS)
{
hr = pEvent->get_UserStatus(&enStatus);
// Deliver the user status to the session window
m_cMessageDlg.DeliverUserStatus(pParticipant, enStatus);
}
return S_OK;
}
会话状态改变事件
会话状态改变事件的处理过程与其他RTC事件相同。会话状态的改变包括建立一个新的音/视频会话,或者通知客户端一个到来的即时消息。下列例子展示了当请求会话时所作的处理;客户端通过一阵铃声被通知,请求被应答,然后会话开始。
Void CAVDConfDlg::OnRTCSessionStateChangeEvent(IRTCSessionStateChangeEvent *pEvent)
{
...
hr = pEvent->get_State(&enState);
hr = pEvent->get_Session(&pSession);
switch ( enState )
{
case RTCSS_INCOMING:
{
...
// This event is called when an incoming call occurs
RTC_SESSION_TYPE enType;
hr = pSession->get_Type(&enType);
// Ring the bell
m_pClient->PlayRing(RTCRT_PHONE, VARIANT_TRUE);
// Accept the session
hr = pSession->Answer();
}
}
...
}
- ››微软PowerPoint 2013细节功能介绍
- ››微软Bing Tranalator将支持雅虎Babel Fish用户
- ››微软关于Windows 7 SP1安装的建议
- ››微软应延长Windows XP寿命的10大理由
- ››微软Windows 7 SP1 RC 官方已经提供下载
- ››微软也为谷歌的Android系统制作应用程序
- ››微软发布超级计算机版Excel测试版本
- ››微软推出Windows 7自动升级程序
- ››微软证实不会在欧洲市场发布Win7无浏览器版
- ››微软将允许PowerPoint和Excel文件嵌入网页
- ››微软发8月补丁修9大漏洞 DLL劫持漏洞未修复
- ››微软称:Android 隐形成本巨大
更多精彩
赞助商链接