Libjingle应用之二——发送和查询在线信息
来源:互联网 发布:怎样做数据分析 编辑:程序博客网 时间:2024/05/22 14:27
当登陆到XMPP服务器之后,需要将当前自己的状态发送给服务器,同时请求其朋友列表的在线信息,服务器会将朋友列表的JID和在线信息作为应答发送回来,利用收到的JID和在线信息应答,可以向另一个用户发起连接请求。服务器会一直发送状态通知直到连接结束。当完成发送和接收状态信息后,就可以开始发送和接收会话请求了,且听下回分解。
Libjingle提供两个XmppTask对象发送和查询状态:
1)PresenceOutTask向服务器发送状态信息,状态信息存放在Status对象中。
2) PresencePushTask接收服务器发来的状态信息,当调用PresencePushTask::Start时启动,同时客户端需要连接到SignalStatusUpdate信号,当接收到一个状态信息时,信号将会被触发。
下面的步骤描述如何发送和接收状态信息:
1)注册接收状态通知。实例化PresencePushTask,启动,连接到OnStatusUpdate信号,由于服务器可能在接收到客户端状态信息后马上返回当前用户在线状态通知,为了避免消息丢失,在发送状态信息之前需要先创建监听器。
presence_push_ = new buzz::PresencePushTask(xmpp_client_);
presence_push_->SignalStatusUpdate.connect(this, &OnStatusUpdate);
presence_push_->Start();
presence_push_->SignalStatusUpdate.connect(this, &OnStatusUpdate);
presence_push_->Start();
2)填充Status状态信息。
buzz::Status my_status;
my_status.set_jid(xmpp_client_->jid());
my_status.set_available(true);
my_status.set_invisible(false);
my_status.set_show(buzz::Status::SHOW_ONLINE);
my_status.set_priority(0);
my_status.set_know_capabilities(true);
my_status.set_phone_capability(true);
my_status.set_is_google_client(true);
my_status.set_version("1.0.0.66");
my_status.set_jid(xmpp_client_->jid());
my_status.set_available(true);
my_status.set_invisible(false);
my_status.set_show(buzz::Status::SHOW_ONLINE);
my_status.set_priority(0);
my_status.set_know_capabilities(true);
my_status.set_phone_capability(true);
my_status.set_is_google_client(true);
my_status.set_version("1.0.0.66");
3)利用PresenceOutTask将状态信息发送给服务器。
buzz::PresenceOutTask* presence_out_ = new buzz::PresenceOutTask(xmpp_client_);
presence_out_->Send(my_status);
presence_out_->Start();
presence_out_->Send(my_status);
presence_out_->Start();
- Libjingle应用之二——发送和查询在线信息
- Libjingle应用之三——设置会话管理
- Libjingle应用之一——登陆服务器
- libjingle源码分析之二:Thread和SocketServer
- libjingle源码分析之二:Thread和SocketServer
- WMI技术介绍和应用——查询桌面信息
- WMI技术介绍和应用——查询驱动信息
- WMI技术介绍和应用——查询文件夹信息
- WMI技术介绍和应用——查询系统信息
- WMI技术介绍和应用——查询时间信息
- WMI技术介绍和应用——查询硬件信息
- WMI技术介绍和应用——查询硬件信息
- WMI技术介绍和应用——查询系统信息和补丁包信息
- WMI技术介绍和应用——查询系统信息和补丁包信息
- SQLiteDatabase之ContentProvider应用——音频播放器_如何查询专辑信息_艺术家信息_歌曲信息?
- libjingle源码分析之:Thread和SocketServer
- libjingle源码分析之:Session和Transport
- WMI技术介绍和应用——查询磁盘分区和逻辑磁盘信息
- 我要考网络工程师
- 数据库设计经验谈(4)
- c++两个少见的错误
- Tomcat的中文乱码的经典解决方案
- 数据库设计经验谈(5 终章)
- Libjingle应用之二——发送和查询在线信息
- girdview删除确认的实现
- TCP/IP详解学习笔记(11)-TCP交互数据流,成块数据流 (转)
- hdoj 1231-最大连续子序列
- 最常见的20种VC++编译错误信息
- Pku acm 1861 NetWork 数据结构题目解题报告(二) ----最小生成树:prim算法&Kruskal算法
- Linux网络服务
- 影响数据中心十大颠覆性技术
- 如何获取本地计算机的IP,子网掩码