创建 XML 配置文件
以下代码演示如何创建 XML 配置文件字符串。
HRESULT CSIPLogin::CreateXMLProvision(LPSTR szURI, LPSTR szSIPIP,
LPSTR szTransport, BSTR *bstrBuf)
{
... .
// 生成 XML 装置文档
wsprintf(szBuf, "<provision key="AVDConf_2" name="AVDConf_2">"
"<user uri="%s" account="" password="" realm="%s" />"
"<sipsrv addr="%s" protocol="%s" %s role="proxy">"
"<&&keyword=session&Submit=+%CB%D1%CB%F7+"session party="first" type="pc2pc" />"
"<&&keyword=session&Submit=+%CB%D1%CB%F7+"session party="first" type="pc2ph" />"
"<&&keyword=session&Submit=+%CB%D1%CB%F7+"session party="first" type="im" />"
"</sipsrv>"
"<sipsrv addr="%s" protocol="%s" %s role="registrar"/>"
"</provision>",
szURIBuf, szRealm,
szSIPIP, szTransport, bBasicAuth ? "auth="basic"" : "",
szSIPIP, szTransport, bBasicAuth ? "auth="basic"" : ""
);
... .
return S_OK;
}
在本文前面显示的示例应用程序和代码片段中,无须包括帐户用户 ID 和密码,因为 SIP 服务器不需要它。但是,如果知道 SIP 服务器需要登录帐户,则可以在配置文件字符串中包括用户 ID 和密码,以便登录到 SIP 服务器。注册需要的信息包括用户的统一资源标识符 (URI)、领域或域、RTC 服务器 IP、验证方法以及用于与服务器通信的传输协议。支持的传输协议包括 TCP、UDP 和 TLS。使用的 SIP 服务器同时支持“基本”和“摘要”身份验证。如果是“基本”身份验证,则传输协议必须是 TLS(出于安全考虑)。
创建好友列表和观察程序对象
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)注册配置文件并启用出席信息后,向好友列表添加新用户将非常简单。使用 IRTCClientPresence &&接口(提供启用出席的方法)、添加好友、删除好友、枚举观察程序、设置本地出席状态、确定应用程序处理新观察程序中订阅的方法以及设置隐私模式。本示例代码未演示如何实现隐私模式,但值得注意的是,通过该功能用户可以创建一个允许呼叫的用户的离散列表。
// 获取 RTC 客户端出席信息&&接口
IRTCClientPresence * pPresence = NULL;
hr = m_pClient->QueryInterface(
IID_IRTCClientPresence,
(void **)&pPresence);
if (FAILED(hr))
{
// QueryInterface 失败
char szBuf[256];
wsprintf (szBuf, "Failed to Query Presence InterfaceErr = 0x%x", hr );
MessageBox ( szBuf );
return hr;
}
// 添加好友
IRTCBuddy * pBuddy = NULL;
hr = pPresence->AddBuddy(
bstrURI,
bstrName,
NULL,
VARIANT_TRUE,
NULL,
0,
&pBuddy);
SAFE_RELEASE(pPresence);
if (FAILED(hr))
{
// Addbuddy 失败
SAFE_RELEASE(pBuddy);
char szBuf[256];
wsprintf (szBuf, "Failed to Add Buddy to List.Err = 0x%x", hr );
MessageBox ( szBuf );
return hr;
}
// 更新好友列表条目
UpdateBuddyList(pBuddy);
SAFE_RELEASE(pBuddy);
如果成功创建了新的好友,AddBuddy() 方法将返回一个&&keyword=%D6%B8%D5%EB&Submit=+%CB%D1%CB%F7+"指针,该&&keyword=%D6%B8%D5%EB&Submit=+%CB%D1%CB%F7+"指针指向新创建的好友列表中的 IRTCBuddy &&接口。使用 IRTCBuddy &&接口,客户端应用程序可以获取好友的出席 URI、好友名称、好友状态、永久类型以及与好友出席相关的私人数据。
取消注册和禁用配置文件
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)调用 IRTCClientProvisioning::DisableProfile() 方法取消注册 SIP 服务器中的用户。在调用 DisableProfile() 方法后,请务必释放配置文件对象。
优化性能
在基于 Pentium 4 处理器的系统中,后台任务要占用大量的资源。但是,应用程序的响应性能主要受其体系结构的影响。要解决此问题,需要创建一些线程,让它们并行并为其他需要立即关注的活动提供服务。在带有超线程技术和 Windows XP Service Pack 1 (SP1) 的 Pentium 4 处理器上运行多线程应用程序,能够大大改善应用程序的响应性能,并使应用程序能够更有效地执行多个任务。
Windows XP SP1 将带有超线程技术的 Pentium 4 处理器看作两个逻辑处理器,因而与单个逻辑 CPU 相比,Windows XP 可以承担两倍的工作。
图 4:使用超线程技术(左)和未使用超线程技术(右)运行的示例用户界面
图 4 说明了后台运行磁盘清理实用程序时,使用和不使用超线程技术的 Pentium 4 处理器的 CPU 使用情况对比。
小结
通过实时通信 (RTC) API,可以生成全功能的会议和协作工具,不管是从计算机到计算机、从计算机到电话还是从电话到电话的通信。在本文中,我们进一步扩展到包括出席信息和好友列表功能,以创建社区和跟踪人员的可用性。结合大量的 RTC API 和 Microsoft 实时通信服务器,您可以生成复杂、有效的协作通信工具,此工具能够增加跨站点团队的工作效率。
使用 RTC API 开发并运行在 Pentium 4 处理器(带有超线程技术和 Windows XP SP1)中的通信应用程序,在同时执行多项任务时可以实现较高的通信速度和改善的响应性能。