从smack4.1开始就已经替代了asmack 所以以后只用smack就可以了
smack_4_1_1/releasedocs/documentation/gettingstarted.html
这个文档是入门教程
smack_4_1_3/javadoc/index.html
查看所有的类,这个版本的java包比较多,怎么找到对应的类所在的文件
下载smack源代码,然后通过find命令找到对应的文件,比如roster.java在smack-im目录下,那么要想引用Roster类就需要smack-im.jar
addPacketListener 已经废弃,建议通过addAsyncStanzaListener 和addSyncStanzaListener来代替
message类型还多了inactive 和active 可以用来实现 “正在输入...”
一些流程问题可以参考Spark的例子
需要jar文件
jxmpp-util-cache-0.4.1.jar, jxmpp-core-0.4.1.jar
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.jxmpp/jxmpp-core/0.4.1/
http://grepcode.com/snapshot/repo1.maven.org/maven2/org.jxmpp/jxmpp-util-cache/0.4.1
如果服务器地址是域名的话 还需要minidns-0.1.1.jar
安卓端还需要smack-android-4.1.1.jar 要不会报空指针错误
smack-android-extensions-4.1.1.jar
还需要设置SecurityMode.disabled 要不会有各种问题。。。。
XMPPTCPConnectionConfiguration config = XMPPTCPConnectionConfiguration
.builder()
.setCompressionEnabled(false)
.setSecurityMode(
org.jivesoftware.smack.ConnectionConfiguration.SecurityMode.disabled)
.setServiceName("10.6.0.144").setHost("10.6.0.144")
.setPort(5222).build();
AbstractXMPPConnection conn = new XMPPTCPConnection(config);
自定义属性 需要通过ProviderManager.addExtensionProvider 或者addIQProvider 这个来添加对应的解析
监听到之后进行强转就可以拿到对应的属性了
http://asmack.org
http://asmack.freakempire.de
1、创建多人聊天室
String room_name = "room_name@conference.jwleng/pdchat"; MultiUserChat room = new MultiUserChat(PDChat.getConnectionManger().getConnection(), room_name);
加入聊天室 时 "room_name@conference.jwleng/pdchat"; 不能带resource
下载地址
http://asmack.freakempire.de/
// String room_name = "room_name@conference.jwleng/pdchat";
// MultiUserChat room = new MultiUserChat(PDChat.getConnectionManger().getConnection(), room_name);
// try {
// System.out.println("======111111============");
// room.join("name1_"+name);
// System.out.println("======2222============");
// } catch (Exception e2) {
// e2.printStackTrace();
// }
//
System.out.println("======searchUserssearchUserssearchUserssearchUserssearchUserssearchUsers=========");
String room_name1 = "room_name@conference.jwleng";
MultiUserChat room1 = new MultiUserChat(PDChat.getConnectionManger().getConnection(), room_name1);
try {
System.out.println("======111111===11111111111111=========");
room1.join("name1_"+name);
System.out.println("======2222=======2222222222222222=====");
boolean b = MultiUserChat.isServiceEnabled(PDChat.getConnectionManger().getConnection(), "88@jwleng/pdchat");
System.out.println("============xxxx======"+b);
//b = MultiUserChat.isServiceEnabled(PDChat.getConnectionManger().getConnection(), "88@jwleng");
//System.out.println("============xxxx==11111111111===="+b);
List<String> rooms = MultiUserChat.getJoinedRooms(PDChat.getConnectionManger().getConnection(), "88@jwleng/pdchat");
System.out.println("=====size======"+rooms.size());
} catch (Exception e2) {
e2.printStackTrace();
}
System.out.println("======searchUserssearchUserssearchUserssearchUserssearchUserssearchUsers====11111111111=====");
当一个用户下线时,会自动退出聊天室
设置了bookmarkedConference 也只是在服务器端存了一个preference,还需要下次登录时代码登录,参考Spark
1
|