smack+openfire 群聊(四)js端监听和发送消息

第一步,引入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;
}

技术交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值