XMPP协议之Openfire安装与使用
2015-07-09 11:00
405 查看
原文地址:http://blog.csdn.net/zhu_tianwei/article/details/46314197
Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。Openfire安装和使用都非常简单,并利用Web进行管理,通过插件的方式进行功能集成,支持服务器集群。单台服务器可支持上万并发用户。Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。由于是采用开放的XMPP协议,您可以使用各种支持XMPP协议的IM客户端软件登陆服务。
官网:http://www.igniterealtime.org/
安装很简单,请参考文档:
http://www.linuxidc.com/Linux/2012-09/69539.htm
/article/5147142.html
测试发送消息:类库使用smack,客户端基于spark.
添加依赖:
[html]
view plaincopyprint?
<dependency>
<groupId>org.igniterealtime.smack</groupId>
<artifactId>smack</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.igniterealtime.smack</groupId>
<artifactId>smackx</artifactId>
<version>3.2.1</version>
</dependency>
代码参考:
[java]
view plaincopyprint?
package cn.slimsmart.xmpp.demo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.jivesoftware.smack.Chat;
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.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
public class XmppChatText {
private static Connection connection = null;
public static void main(String[] args) throws XMPPException, Exception {
SmackConfiguration.setKeepAliveInterval(3000);
SmackConfiguration.setPacketReplyTimeout(6000);
connection = getConnection();
connection.connect();// 开启连接
Thread.sleep(10000);
connection.login("test", "123456");// 利用用户名和密码登录
SendBCMsg("广播消息","admin");
SendMsg("您好吗");
System.out.println(getRosterList());
System.out.println(getRoster());
while(true);
}
/**
* 获取连接
*
* @return
*/
public static Connection getConnection() {
// 新建连接配置对象,设置服务器IP和监听端口
ConnectionConfiguration connectionConfig = new ConnectionConfiguration("192.168.18.67", 5222);
// 允许自动连接
connectionConfig.setReconnectionAllowed(true);
connectionConfig.setSendPresence(true);
/** 是否启用压缩 */
connectionConfig.setCompressionEnabled(true);
/** 是否启用安全验证 */
connectionConfig.setSASLAuthenticationEnabled(true);
/** 是否启用调试 */
connectionConfig.setDebuggerEnabled(false);
Connection connection = new XMPPConnection(connectionConfig);
return connection;
}
/**
* 销毁连接
*
* @param connection
*/
public static void destory() {
if (connection != null) {
connection.disconnect();
connection = null;
}
}
/**
* 发送广播消息
*/
public static void SendBCMsg(String messgage, String groupName) throws XMPPException {
Message m = new Message();
m.setBody(messgage);// 设置消息。
m.setTo(groupName + "@xmpp");// [groupname]@[serviceName].[serverName]
connection.sendPacket(m);
}
/**
* 发送即使消息
* @param username
* @param pass
* @param messgage
* @throws XMPPException
*/
public static void SendMsg(String messgage) throws XMPPException {
Chat mychat = connection.getChatManager().createChat("admin@xmpp", // 接收端的JID,JID是要加域的
new MessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
String messageBody = message.getBody();
System.out.println("收到信息:" + messageBody + " " + message.getFrom());
}
});
mychat.sendMessage(messgage); // 发送信息
}
/**
* 获取好友列表
*
* @param username
* @param pass
* @return
* @throws XMPPException
*/
public static List<RosterEntry> getRosterList()
throws XMPPException {
Collection<RosterEntry> rosters = connection.getRoster().getEntries();
for (RosterEntry rosterEntry : rosters) {
System.out.print("name: " + rosterEntry.getName() + ",jid: "
+ rosterEntry.getUser()); // 此处可获取用户JID
System.out.println();
}
return null;
}
/**
* 获取用户列表(含组信息)
*
* @param username
* @param pass
* @return
* @throws XMPPException
*/
public static List<RosterEntry> getRoster()
throws XMPPException {
Roster roster = connection.getRoster();
List<RosterEntry> EntriesList = new ArrayList<RosterEntry>();
Collection<RosterEntry> rosterEntry = roster.getEntries();
Iterator<RosterEntry> i = rosterEntry.iterator();
while (i.hasNext()) {
EntriesList.add(i.next());
}
return EntriesList;
}
}
其他功能api参考:
1.smack开发文档
2.基于xmpp openfire smack开发之openfire介绍和部署
3.基于xmpp_openfire_smack开发之smack类库介绍和使用
Openfire 采用Java开发,开源的实时协作(RTC)服务器基于XMPP(Jabber)协议。Openfire安装和使用都非常简单,并利用Web进行管理,通过插件的方式进行功能集成,支持服务器集群。单台服务器可支持上万并发用户。Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。由于是采用开放的XMPP协议,您可以使用各种支持XMPP协议的IM客户端软件登陆服务。
官网:http://www.igniterealtime.org/
安装很简单,请参考文档:
http://www.linuxidc.com/Linux/2012-09/69539.htm
/article/5147142.html
测试发送消息:类库使用smack,客户端基于spark.
添加依赖:
[html]
view plaincopyprint?
<dependency>
<groupId>org.igniterealtime.smack</groupId>
<artifactId>smack</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.igniterealtime.smack</groupId>
<artifactId>smackx</artifactId>
<version>3.2.1</version>
</dependency>
代码参考:
[java]
view plaincopyprint?
package cn.slimsmart.xmpp.demo;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.jivesoftware.smack.Chat;
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.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
public class XmppChatText {
private static Connection connection = null;
public static void main(String[] args) throws XMPPException, Exception {
SmackConfiguration.setKeepAliveInterval(3000);
SmackConfiguration.setPacketReplyTimeout(6000);
connection = getConnection();
connection.connect();// 开启连接
Thread.sleep(10000);
connection.login("test", "123456");// 利用用户名和密码登录
SendBCMsg("广播消息","admin");
SendMsg("您好吗");
System.out.println(getRosterList());
System.out.println(getRoster());
while(true);
}
/**
* 获取连接
*
* @return
*/
public static Connection getConnection() {
// 新建连接配置对象,设置服务器IP和监听端口
ConnectionConfiguration connectionConfig = new ConnectionConfiguration("192.168.18.67", 5222);
// 允许自动连接
connectionConfig.setReconnectionAllowed(true);
connectionConfig.setSendPresence(true);
/** 是否启用压缩 */
connectionConfig.setCompressionEnabled(true);
/** 是否启用安全验证 */
connectionConfig.setSASLAuthenticationEnabled(true);
/** 是否启用调试 */
connectionConfig.setDebuggerEnabled(false);
Connection connection = new XMPPConnection(connectionConfig);
return connection;
}
/**
* 销毁连接
*
* @param connection
*/
public static void destory() {
if (connection != null) {
connection.disconnect();
connection = null;
}
}
/**
* 发送广播消息
*/
public static void SendBCMsg(String messgage, String groupName) throws XMPPException {
Message m = new Message();
m.setBody(messgage);// 设置消息。
m.setTo(groupName + "@xmpp");// [groupname]@[serviceName].[serverName]
connection.sendPacket(m);
}
/**
* 发送即使消息
* @param username
* @param pass
* @param messgage
* @throws XMPPException
*/
public static void SendMsg(String messgage) throws XMPPException {
Chat mychat = connection.getChatManager().createChat("admin@xmpp", // 接收端的JID,JID是要加域的
new MessageListener() {
@Override
public void processMessage(Chat chat, Message message) {
String messageBody = message.getBody();
System.out.println("收到信息:" + messageBody + " " + message.getFrom());
}
});
mychat.sendMessage(messgage); // 发送信息
}
/**
* 获取好友列表
*
* @param username
* @param pass
* @return
* @throws XMPPException
*/
public static List<RosterEntry> getRosterList()
throws XMPPException {
Collection<RosterEntry> rosters = connection.getRoster().getEntries();
for (RosterEntry rosterEntry : rosters) {
System.out.print("name: " + rosterEntry.getName() + ",jid: "
+ rosterEntry.getUser()); // 此处可获取用户JID
System.out.println();
}
return null;
}
/**
* 获取用户列表(含组信息)
*
* @param username
* @param pass
* @return
* @throws XMPPException
*/
public static List<RosterEntry> getRoster()
throws XMPPException {
Roster roster = connection.getRoster();
List<RosterEntry> EntriesList = new ArrayList<RosterEntry>();
Collection<RosterEntry> rosterEntry = roster.getEntries();
Iterator<RosterEntry> i = rosterEntry.iterator();
while (i.hasNext()) {
EntriesList.add(i.next());
}
return EntriesList;
}
}
其他功能api参考:
1.smack开发文档
2.基于xmpp openfire smack开发之openfire介绍和部署
3.基于xmpp_openfire_smack开发之smack类库介绍和使用
相关文章推荐
- 获取tomcat源码
- eclipse启动tomcat404,但控制台没报错
- Linux服务器运行命令df -h无响应
- linux编程获取本机IP地址
- tomcat启动Flash退出错误不能被视为解决该错误信息
- Linux下合并前缀相同的文件的程序流程及其C代码实现
- drupal 开发简单网站流程
- Hadoop运维
- Nginx服务器中设置禁止访问文件或目录的方法
- VMX学习-VMX Non-Root Operation
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- Nginx隐藏服务器端各类信息的方法
- Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定
- nginx
- Linux学习之CentOS(二十八)--RAID原理基础及Linux下软件RAID配置
- shell 监控磁盘使用率
- Linux学习之CentOS(二十五)--Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理
- Linux学习之CentOS(二十六)--Linux磁盘管理:LVM逻辑卷的创建及使用
- linux中shell变量$#,$@,$0,$1,$2的含义解释
- Linux Platform总线+SPI总线分析