Smack Message 扩展属性

由于XMPP不支持群聊很多本地化的服务,

针对Openfire开发插件解决问题:

Message 扩展:

Message videoMsg = new Message();
VideoChatRTP videoXml = new VideoChatRTP();
//扩展类型
videoXml.setVideoType(VideoMediaType.REQUEST);
//请求类型
videoXml.setAddress(address);
//地址
videoMsg.setTo(receive);
videoMsg.addExtension(videoXml);
//message扩展

XMPPConnection conn = BaseService.getInstance().getConnection();
conn.sendPacket(videoMsg);

扩展类必须继承PacketExtension

以下是段简单的实例:

public class VideoChatRTP implements PacketExtension {
private VideoMediaType videoType;
private String address;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public VideoMediaType getVideoType() {
return videoType;
}
public void setVideoType(VideoMediaType videoType) {
this.videoType = videoType;
}
public static final String NAME = "jingle";
public static final String NAME_SPACE = "com:roger:video";
public VideoChatRTP(){
super();
}
@Override
public String getElementName() {
return NAME;
}
@Override
public String getNamespace() {
return NAME_SPACE;
}
@Override
public String toXML() {
StringBuffer sb = new StringBuffer();
sb.append("<jingle").append(" xmlns=\"").append(NAME_SPACE).append("\">");
sb.append("<type>").append(videoType).append("</type>");
sb.append("<ipAddress>").append(address).append("</ipAddress>");
sb.append("</jingle>");
return sb.toString();
}
}

扩展类型监听方法:

ProviderManager.getInstance().addExtensionProvider(VideoChatRTP.NAME, VideoChatRTP.NAME_SPACE, new VideoChatReceive());

扩展类型处理类(实现PacketExtensionProvider接口):

public class VideoChatReceive implements PacketExtensionProvider {

/**
* 处理视频扩展类型message
* @author bin.xiao
* @since 2013-04-12
* */
@Override
public PacketExtension parseExtension(XmlPullParser parser)
throws Exception {
boolean done = false;
String requestType = "asdasd";
String ipAddress = "asdasd";
while(!done){
int eventType = parser.next();

String name = parser.getName();
//XML Tab标签
if(eventType == XmlPullParser.START_TAG){
if(name.equals("type")){
requestType = parser.nextText();
}
if(name.equals("ipAddress")){
ipAddress = parser.nextText();
}
}
if(eventType == XmlPullParser.END_TAG){
if(name.equals("jingle")){
done = true;
}
}
}
VideoChatRTP videoRtp = new VideoChatRTP();
videoRtp.setVideoType(VideoMediaType.valueOf(requestType));
//字符串转枚举
videoRtp.setAddress(ipAddress);
return videoRtp;
}
}

时间: 2024-10-19 03:39:43

Smack Message 扩展属性的相关文章

Smack Message扩展,添加自定义元素(标签)经验分享

Smack框架对XMPP协议进行了封装,从而方便与Openfire即时通信服务器做交互.说白了,Smack框架可以通过对象构造符合XMPP协议的XML字符串,避免手动拼接字符串. XMPP协议基本XML结构如下: 1 <message 2 from='发送方jid' 3 to='接收方jid' 4 type='消息类型(普通消息/群聊)'> 5 <body>消息内容</body> 6 </message> 大多数情况下,这么简单的结构是满足不了需求的,我们可

扩展Smack Message

XMPP是一种基于标准通用标记语言的子集XML的协议,它继承了在XML环境中灵活的发展性. Smack是一个开源的用 java 写的XMPP(jabber)客户端代码库 因为XMPP是XML,所以进行扩展十分方便.而Smack也提供了对Message扩展的支持. Smack对Message扩展主要需要两个接口 org.jivesoftware.smack.packet.PacketExtensionorg.jivesoftware.smack.provider.PacketExtensionPr

SQL Server扩展属性的增、删、改、查

使用 sql 语句创建表时,可以使用系统存储过程 sp_addextendedproperty 给字段添加描述说明. sp_addextendedproperty 语法: 1 sp_addextendedproperty 2 [ @name = ] { 'property_name' } 3 [ , [ @value = ] { 'value' } 4 [ , [ @level0type = ] { 'level0_object_type' } 5 , [ @level0name = ] { '

关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2个人理解心得

最近在用C#写一个创建Excel并将数据导出到Excel的WinForm程序, 让我对OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2有了深刻的认识! 参数HDR的值: HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用.系统默认的是YES参数Excel 8.0 对于Excel 97以上到2003版本都用Excel 8.0,2007或2010的都用Extended Propert

Ado.net 类扩展属性

1.要扩展的类名字一样,2个类加(partial) 小例子: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; /// <summary> /// Stores 扩展属性(扩展一个Stores类) /// </summary> public partial class

SQL Server -查看数据库扩展属性

1.fn_listextendedproperty 函数可以基于对象类型显示单个数据库对象或数据库中所有对象的扩展属性.例如,可以返回表或表中所有列的扩展属性. A.下面的示例显示了数据库本身设置的所有扩展属性. USE AdventureWorks2008R2; GO SELECT objtype, objname, name, value FROM fn_listextendedproperty(default, default, default, default, default, def

关于数据库对象的扩展属性

今天有人问有没有办法查看表的注释,或查询所有表的注释.这里所说的表或表字段等的注释,其实是数据库对象的扩展属性.在MSSQL中,支持把一些注释性的内容放到数据库或数据库对象中,增强可读性,有助于日后的管理和维护工作.扩展属性的内容可以通过SSMS添加.修改或删除,也可以通过系统视图查询,通过执行相关的存储过程来维护. 创建一张测试表: IF OBJECT_ID(N'T8') IS NOT NULL BEGIN DROP TABLE T8 END GO CREATE TABLE T8 ( id I

用表来管理SQLServer中的扩展属性(描写叙述)

数据字典是个好东东,对于开发.维护很重要. 但Sql Server中写描写叙述确实不方便,怎样化繁为简.批量地添加改动扩展属性呢? 添加2个表和5个存储过程.2个触发器.1个表值函数就好了. 把以下的SQL运行一遍生成相关的对象, 然后运行一下: 1. EXEC Proc_Util_Desc_GetColumnNameToDescTable , 生成表的描写叙述相应记录 2. EXEC Proc_Util_Desc_GetTableNameToDescTable, 生成列的描写叙述相应记录 3.

用表来管理SQLServer中的扩展属性(描述)

数据字典是个好东东,对于开发.维护非常重要. 但Sql Server中写描述确实不方便,如何化繁为简.批量地增加修改扩展属性呢? 增加2个表和5个存储过程.2个触发器.1个表值函数就好了. 把下面的SQL执行一遍生成相关的对象, 然后执行一下: 1. EXEC Proc_Util_Desc_GetColumnNameToDescTable , 生成表的描述对应记录 2. EXEC Proc_Util_Desc_GetTableNameToDescTable, 生成列的描述对应记录 3. 查看,