




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Openfire即时通讯服务搭建与Smack访问Openfire 是开源的、基于可拓展通讯与表示协议(XMPP)、采用Java编程语言开发的实时协作服务器。 Openfire安装与使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。首先到openfire官网上去下载Openfire的服务器包与Smack的客户端调用包。Openfire下载后,如果是win的版本,那么它是一个exe的安装包,运行下一步下一步即可,其间会需要配置数据库(Openfire当然是需要数据库支持的了,比如要存帐号等等的信息)。编写我们的程序访问Operfirejava view plain copyimport java.util.Collection; import java.util.Iterator; import .SocketFactory; import org.jivesoftware.smack.AccountManager; import org.jivesoftware.smack.Chat; import org.jivesoftware.smack.ChatManager; import org.jivesoftware.smack.ChatManagerListener; import org.jivesoftware.smack.Connection; import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.MessageListener; import org.jivesoftware.smack.Roster; import org.jivesoftware.smack.RosterEntry; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Presence; import org.jivesoftware.smack.packet.Session; import org.jivesoftware.smack.packet.Message.Type; public class SmackUtil private Connection connection; private ConnectionConfiguration config; /* openfire服务器address */ private final static String server = 5; private final void print(Object o) if (o != null) System.out.println(o); private final void print(Object o, Object. args) if (o != null & args != null & args.length 0) String s = o.toString(); for (int i = 0; i args.length; i+) String item = argsi = null ? : argsi.toString(); if (s.contains( + i + ) s = s.replace( + i + , item); else s += + item; System.out.println(s); /* * 初始Smack对openfire服务器链接的基本配置 */ public void init() try /connection = new XMPPConnection(server); /connection.connect(); /* 5222是openfire服务器默认的通信端口,你可以登录5:9090/到管理员控制台查看客户端到服务器端口 */ config = new ConnectionConfiguration(server, 5222); /* 是否启用压缩 */ config.setCompressionEnabled(true); /* 是否启用安全验证 */ config.setSASLAuthenticationEnabled(true); /* 是否启用调试 */ config.setDebuggerEnabled(false); config.setReconnectionAllowed(true); config.setRosterLoadedAtLogin(true); /* 创建connection链接 */ connection = new XMPPConnection(config); /* 建立连接 */ connection.connect(); System.out.println(connection success); catch (XMPPException e) e.printStackTrace(); print(connection); print(connection.getConnectionID(); public void destory() if (connection != null) connection.disconnect(); connection = null; /* * ConnectionConfiguration 的基本配置相关信息 */ public void seeConfig() print(PKCS11Library: + config.getPKCS11Library(); print(ServiceName: 0, config.getServiceName(); / ssl证书密码 print(TruststorePassword: 0, config.getTruststorePassword(); print(TruststorePath: 0, config.getTruststorePath(); print(TruststoreType: 0, config.getTruststoreType(); SocketFactory socketFactory = config.getSocketFactory(); print(SocketFactory: 0, socketFactory); /* * Connection 基本方法信息 */ public void seeConnection() /* 用户管理 */ AccountManager accountManager = connection.getAccountManager(); for (String attr : accountManager.getAccountAttributes() print(AccountAttribute: 0, attr); print(AccountInstructions: 0, accountManager.getAccountInstructions(); /* 是否链接 */ print(isConnected:, connection.isConnected(); print(isAnonymous:, connection.isAnonymous(); /* 是否有权限 */ print(isAuthenticated:, connection.isAuthenticated(); print(isSecureConnection:, connection.isSecureConnection(); /* 是否使用压缩 */ print(isUsingCompression:, connection.isUsingCompression(); /* * 创建用户 * param username * param password */ public void createUser(String username, String password) AccountManager accountManager = connection.getAccountManager(); try /* 创建一个用户;你可以在管理员控制台页面5:9090/user-summary.jsp查看用户/组的相关信息,来查看是否成功创建用户 */ accountManager.createAccount(username, password); /* 修改密码 */ accountManager.changePassword(abc); catch (XMPPException e) e.printStackTrace(); /* * 修改密码 * param username * param password */ public void changePassword(String password) AccountManager accountManager = connection.getAccountManager(); try /* 修改密码 */ accountManager.changePassword(123456); catch (XMPPException e) e.printStackTrace(); /* * 用户登陆 * param username * param password */ public void login(String username, String password) try /* 用户登陆,用户名、密码 */ connection.login(username, password); catch (XMPPException e) e.printStackTrace(); /* 获取当前登陆用户 */ print(User:, connection.getUser(); /* 所有用户组 */ Roster roster = connection.getRoster(); /* try roster.createEntry(test55, test55, null);/添加好友,不添加成为好友也同样可以收发信息 catch (XMPPException e) / TODO Auto-generated catch block e.printStackTrace(); */ /* 好友用户组,你可以用Spark添加用户好友,这样这里就可以查询到相关的数据 */ Collection rosterEntiry = roster.getEntries(); Iterator iter = rosterEntiry.iterator(); while (iter.hasNext() RosterEntry entry = iter.next(); print(Groups: 0, Name: 1, Status: 2, Type: 3, User: 4, entry.getGroups(), entry.getName(), entry.getStatus(), entry.getType(), entry); print(-); /* 未处理、验证好友,添加过的好友,没有得到对方同意 */ Collection unfiledEntries = roster.getUnfiledEntries(); iter = unfiledEntries.iterator(); while (iter.hasNext() RosterEntry entry = iter.next(); print(Groups: 0, Name: 1, Status: 2, Type: 3, User: 4, entry.getGroups(), entry.getName(), entry.getStatus(), entry.getType(), entry); /* * 添加消息监听器 */ public void addMsgListener() /监听接收到的消息 connection.getChatManager().addChatListener(new ChatManagerListener() /可以监听到所有用户发来的消息 Override public void chatCreated(Chat chat, boolean createdLocally) chat.addMessageListener(ew MessageListener() public void processMessage(Chat chat, Message message) /String from = message.getFrom(); /String body = message.getBody(); System.out.println(body:+message.getBody(); ); ); /* * Packet消息聊天 * param from * param to * param msg */ public void sendPacketMsg(String from, String to, String msg) / try / connection.login(from, from); / catch (XMPPException e) / e.printStackTrace(); / /* 更改用户状态,available=true表示在线,false表示离线,status状态签名;当你登陆后,在Spark客户端软件中就可以看到你登陆的状态 */ Presence presence = new Presence(Presence.Type.available); presence.setStatus(Q我吧); connection.sendPacket(presence); Session session = new Session(); /String sessid = session.nextID(); connection.sendPacket(session); Message message = new Message(to+ + server, Type.chat); /Message message = new Message(sessid, Type.chat); message.setBody(msg); connection.sendPacket(message); /* * Chat消息聊天 * param from * param to * param msg */ public void sendChatMsg(String from, String to, String msg) /* 设置状态 */ / try / connection.login(from, from); / catch (XMPPException e) / e.printStackTrace(); / /* 设置状态 */ Presence presence = new Presence(Presence.Type.available); presence.setStatus(Q我吧); connection.sendPacket(presence); /* 获取当前登陆用户的聊天管理器 */ ChatManager chatManager = connection.getChatManager(); /* 为指定用户创建一个chat,监听对方发过来的消息 */ Chat chat = chatManager.createChat(to+ + server, new MessageListener() /仅监听该用户发来的消息 Override public void processMessage(Chat chat, Message message) System.out.println(body:+message.getBody(); ); try /* 发送消息 */ chat.sendMessage(msg); /* 用message对象发送消息 */ / Message message = new Message(); / message.setBody(essage); / message.setProperty(color, red); / chat.sendMessage(message); catch (XMPPException e) e.printStackTrace(); 创建两个通讯的测试帐号java view plain copypublic static void main(String args) SmackUtil smackUtil = new SmackUtil(); smackUtil.init(); smackUtil.seeConfig(); smackUtil.seeConnection(); smackUtil.createUser(test1, test1); java view plain copypublic static void main(String args) SmackUtil smackUtil = new SmackUtil(); smackUtil.init(); smackUtil.seeConfig(); smackUtil.seeConnection(); smackUtil.createUser(test2, test2); 利用刚创建好的帐号来登陆并发送消息test1 登陆并发送消息:java view plain copypublic static void main(String args) SmackUtil smackUtil = new SmackUtil(); smackUtil.init(); smackUtil.seeConfig(); smackUtil.seeConnection(); smackU
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳务合同模板
- 租赁合同:融资租赁协议3篇
- 集体耕地承包合同2篇
- 瑞吉氏染色课件
- 安全方面的培训课题课件
- 理财和养老课件
- 理想华莱课件教学
- 店面升级装修工程方案(3篇)
- 电厂氨水改造工程方案(3篇)
- 球磨机培训课件
- 2025至2030中国HPV相关疾病行业项目调研及市场前景预测评估报告
- 2025版全新离婚协议书:财产分割、子女抚养及离婚后财产保全合同范本
- 石油钻井知识课件
- (2025秋新版)苏教版三年级数学上册全册教案
- 员工信息安全培训手册
- 华为项目管理10大模板Excel版可直接套用-非常实用
- 空管三校联考复习题(DOC)
- GB/T 27021.3-2021合格评定管理体系审核认证机构要求第3部分:质量管理体系审核与认证能力要求
- 3000储罐预制安装施工方案
- 食品工程原理(课堂)课件
- 五年级上册数学课件-《练习一》北师大版 (共10张PPT)
评论
0/150
提交评论