一、简述xmpp和socket区别 推荐xmpp 的基础学习资料
xmpp是一个应用层协议,其底层(传输层和网络层)依然是Socket通信。换句话说,xmpp是建立在Socket通信基础上的。
学习资料
1)百度搜索 xmpp,有很多
2)基于XMPP协议的手机多方多端即时通讯方案
【链接】
二、手机端即时通讯app可否使用WebSocket替代XMPP来实现
理论上是可以的!但websocket是一个web协议,并且是一个新技术,如果是采用HTML5写的app可以尝试,但原生app建议还是用xmpp,毕竟它有很多成熟的实现,如openfire。
三、安卓xmpp怎么去ping服务器
IOS使用XMPP做即时聊天,服务器会在一定的时间间隔内(默认是300S)想客户端发送一个IQ,如何客户端不做出响应,服务器则会默认在客户端的连接是断开的。
需要实现xmpp代理- (BOOL)xmppStream:(XMPPStream*)sender didReceiveIQ:(XMPPIQ*)iq ;
处理代码如下
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq {
PPRSLog(@----------------------%@,iq);
if (iq.isGetIQ) {
//解析iq 是ping类型则给openfier 响应一个IQ
NSXMLElement *query = iq.childElement;
if ([@ping isEqualToString:query.name]) {
//服务器会在给定的时间内向客户端发送ping包(用来确认客户端用户是否在线),当第二次发送bing包时,如果客户端无响应则会T用户下线
NSXMLElement *ping = [NSXMLElement elementWithName:@ping xmlns:@jabber:client];
NSXMLElement *iq = [NSXMLElement elementWithName:@iq];
XMPPJID *myJID = self.xmppStream.myJID;
[iq addAttributeWithName:@from stringValue:myJID.description];
[iq addAttributeWithName:@to stringValue:myJID.domain];
[iq addAttributeWithName:@type stringValue:@get];
[iq addChild:ping];
//发送的iq可以不做任何的设置
[self.xmppStream sendElement:iq];
}
}
return YES;
}
四、android 基于xmpp开发即时通讯时 发送消息的限制
实例挺简单的,已经配置好环境
服务端先装openfire,配置好数据库,建几个用户
然后装spark,可以登录,进去后可以添加好友和进行回话
然后安装这个客户端APP,更改服务器IP,可以进行登录。
只是运行起来有点卡
|