本文章提供了实现IM聊天程序最基础的配置和使用案例,可以实现点对点聊天。可做为入门阅读使用。文章转载请注明来源:http://blog.csdn.net/fengfeng91
官方网站下载openfire服务器安装。配置密码,权限,数据库(内置数据库或者添加外部数据库支持Mysql)
注意* 如果配置外部数据库,需先保证数据库服务已被开启,才能保证服务器开启。
Windows环境下开启抛出异常/乱码时,关闭服务器,以管理员身份运行,当出现以下提示时,表示服务器启动成功。
Openfire 3.9.1 [2014-5-27 16:00:15] XXXX: http://zhaofengpc:9090 https://zhaofengpc:9091
|
以下是openfire默认各个端口:
接口 |
端口 |
|
类型 |
描述 |
所有的地址 |
5222 |
客户端到服务器 |
客户端使用标准端口连接到服务器,连接可能没有加密,您可以更新安全设置 为这个端口 |
|
所有的地址 |
5223 |
客户端到服务器 |
客户端使用旧的SSL方法连接到服务器的端口。旧的SSL方法不是一个XMPP标准方法,在不久将不被支持,您可以更新安全设置 为这个端口 |
|
所有的地址 |
9090 |
管理控制台 |
端口使用不安全的管理控制台访问. |
|
所有的地址 |
9091 |
管理控制台 |
端口使用安全的管理控制台访问. |
|
所有的地址 |
7777 |
文件传送代理服务器 |
代理服务使用的端口允许在XMPP网络上的两个实体使用文件传送 |
|
所有的地址 |
7070 |
HTTP绑定 |
使用不安全的HTTP客户端连接端口 |
|
所有的地址 |
7443 |
HTTP绑定 |
使用安全的HTTP客户端连接端口 |
|
所有的地址 |
5229 |
Flash Cross Domain |
Service that allows Flash clients connect to other hostnames and ports. |
通过Openfire管理控制台管理用户和服务器:http://127.0.0.1:9090/index.jsp
安装smark电脑客户端用于开发测试。
如何使用SDK?
与服务器建立连接 |
//连接配置 openfire服务器地址及端口号 XMPPConnection con = new XMPPConnection(); ConnectionConfiguration connConfig=new ConnectionConfiguration("192.168.191.1",5222); con = new XMPPConnection(connConfig); con.connect(); |
用户登陆 |
//登陆 con.login(“UserName”, “Psw”); Presence presence = new Presence(Presence.Type.available); con.sendPacket(presence); con.disconnect();//登陆成功后,关闭连接(登陆成功,失败的判断处理用异常抓取来实现) |
注*以上仅是最基础的配置,实际运用在需要运用单例模式,多线程,hanlder来处理逻辑 |
建立会话---接收消息 |
/** * * @Title: createAChart * @Description: TODO(和联系人创建一个会话监听处理) * @author zhaofeng@tydic.com * @date 2014-5-8 下午3:11:35 void 返回类型 * @throws */ private void createAChart(String friend){ if (cm == null) { cm = XmppTool.getConnection().getChatManager(); } newchat = cm.createChat("clienta@zhaofengpc", null); cm.addChatListener(new ChatManagerListener() { @Override public void chatCreated(Chat chat, boolean able) { chat.addMessageListener(new MessageListener() { @Override public void processMessage(Chat chat2, Message message){ if(message.getFrom().contains("clienta@zhaofengpc"))//收到来自zhaofengpc服务器xx的消息(获取自己的服务器,和好友) { String[] args = new String[] { "clienta", //获取用户 message.getBody(),//消息 TimeRender.getDate(),//时间 "IN" //类型IN--接收 }; android.os.Message msg = handler.obtainMessage();//在handler里取出来显示消息 msg.what = 1; msg.obj = args; msg.sendToTarget(); }else{ //message.getFrom().cantatins(获取列表上的用户,组,管理消息); } } }); } }); } |
参考项目: |
注意*这里一个完整的用户名是由 用户名称+@+服务器名称(安装时默认取电脑名称) |
基于XMPP协议聊天程序【Openfire+asmark】,布布扣,bubuko.com
原文:http://blog.csdn.net/fengfeng91/article/details/32347731