第一步,引入js strophe.min.js
第二步,创建连接和登录
var BOSH_SERVICE = ' http://172.167.40.19:7070/http-bind/';
这里的地址,需要跟你openfire里配置的一样
第三步,创建连接
if (!connected) {
jid = $("#account").val()+SERVER_IP;
connection = new Strophe.Connection(BOSH_SERVICE);
connection.connect(jid, pwd, onConnect);
}
function onConnect(status) {
console.log('status: ' + status)
if (status == Strophe.Status.CONNFAIL) {
//layer.msg("网络异常,重新登录或者刷新页面!");
} else if (status == Strophe.Status.AUTHFAIL) {
//layer.msg("网络异常,重新登录或者刷新页面!");
} else if (status == Strophe.Status.DISCONNECTED) {
//layer.msg("网络异常,重新登录或者刷新页面!");
connected = false;
} else if (status == Strophe.Status.CONNECTED) {
// layer.msg("连接成功,可以开始聊天了!");
console.log('pubsub', connection)
connected = true;
// 当接收到<message>节,调用onMessage回调函数
connection.addHandler(onMessage, null, 'message', null, null, null);
// 首先要发送一个<presence>给服务器(initial presence)
connection.send($pres().tree());
}
}
第四步,发送消息,这里的类型写的是groupchat 群聊,如果是单聊改成chat
var msg = $msg({
to : ROOM_JID ,
from : jid.substr(0,jid.indexOf('@')),
type : 'groupchat'
}).c("body", null, json);
connection.send(msg.tree());
}
第五步,接受消息
// 接收到<message>
function onMessage(msg) {
// 解析出<message>的from、type属性,以及body子元素
var from = msg.getAttribute('from');
var type = msg.getAttribute('type');
var elems = msg.getElementsByTagName('body');
if (type == "chat" && elems.length > 0) {
var body = elems[0];
$("#msg").append(from + ":<br>" + Strophe.getText(body) + "<br>")
}
return true;
}
技术交流