1、引入stanza.io,创建连接
import XMPP from 'stanza.io'
let myClient = XMPP.createClient({
jid: id + '@' + domain, // 用户唯一标识+domain
password: pwd,// 密码
resource: 'webapp',// 资源识别码,主要用于多端处理
// If you have a .well-known/host-meta.json file for your
// domain, the connection transport config can be skipped.
transport: 'websocket', //连接方式
wsURL: wsURL, //服务地址
useStreamManagement: true,// 断线重连
// (or `boshURL` if using 'bosh' as the transport)
});
工具地址https://github.com/legastero/stanza
2、配置iq消息组件
//自定义组件
var msgTag = myClient.stanzas.define({
name: 'msg',// 识别name
element: 'msg', // 标签msg
namespace: 'jabber:client',//命名空间,没用到过,,
});
myClient.stanzas.withIq(function (Iq) {
myClient.stanzas.extend(Iq, msgTag);
});
var types = myClient.stanzas.utils;
var myx = myClient.stanzas.define({
name: 'myx',
element: 'myx',
namespace: 'jabber:x:data',
fields: { // 标签添加属性
attr1: types.attribute('attr1'),
value: types.text()// 通过定义value给标签塞textcontent
},
});
myClient.stanzas.extend(msgTag, myx); // 标签内再连标签
3、发送iq消息
var sendMyStanza = function(jid, func) {
myClient.sendIq({
to: jid,
type: 'set', //get,set,result,error
msg: {
myx: {
attr1: 'my_attr1',
value:''
}
},(data) => func(data)
});
};
至此,iq消息发送成功。