代码如下:
/**
* @author alex
* @Date 2014-6-14 11:05:49
* openfire通信管理类.
* **/
public class OpenfireManager {
private XMPPConnection connection;
public XMPPConnection getConnection() {
return connection;
}
private String userName="admin";
private String pwd="qq603665610";
private PacketListener listener;
private static OpenfireManager instance= new OpenfireManager();
public static OpenfireManager getInstance()
{
return instance;
}
public void init(PacketListener listener,String userName,String pwd)
{
this.listener = listener;
this.userName = userName;
this.pwd = pwd;
ConnectionConfiguration configuration = new ConnectionConfiguration("192.168.1.83", 5222);
configuration.setDebuggerEnabled(true);
configuration.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);
configuration.setSASLAuthenticationEnabled(false);
configuration.setCompressionEnabled(false);
configuration.setReconnectionAllowed(true);
configuration.setSendPresence(false);
connection = new XMPPConnection(configuration);
}
public void addConnectionListener(ConnectionListener l)
{
connection.addConnectionListener(l);
}
private OpenfireManager(){
}
synchronized public Chat createChat(String to) {
Chat chat = null;
if (isConnected()) {
chat = connection.getChatManager().createChat(to, null);
}
return chat;
}
synchronized public boolean isConnected()
{
return connection!=null && connection.isConnected();
}
synchronized public boolean isLogin()
{
return connection!=null && connection.isAuthenticated();
}
synchronized public void sendMessage(final Chat chat, String body, String subject) throws Exception {
final Message message = new Message();
message.setBody(body);
message.setSubject(subject);
chat.sendMessage(message);
}
synchronized public void connect() throws XMPPException
{
// if(isConnected()) return;
connection.connect();
System.out.println("openfire is connected");
}
synchronized public void login() throws XMPPException
{
connection.login(userName, pwd);
PacketFilter filter = new PacketTypeFilter(Message.class);
connection.addPacketListener(listener, filter);
}
synchronized public void setOnLine() throws XMPPException
{
connection.sendPacket(new Presence(Presence.Type.available));
System.out.println("openfire login");
}
synchronized public void disconnect()
{
if(connection!=null && connection.isConnected())
{
connection.removePacketListener(listener);
// connection.sendPacket(new Presence(Presence.Type.unavailable));
new Thread(){
public void run()
{
try
{
connection.disconnect(new Presence(Presence.Type.unavailable));
}
catch(Exception e)
{
}
}
}.start();
}
}
}
实现消息发送:
try {
if(OpenfireManager.getInstance().getConnection()==null){
OpenfireManager.getInstance().init(UserAction.this, "admin", "qq603665610");
OpenfireManager.getInstance().connect();
}
connection=OpenfireManager.getInstance().getConnection();
if(!OpenfireManager.getInstance().isLogin()){
OpenfireManager.getInstance().login();
}
Chat chat=createChat("client");
String aa=connection.getUser();
System.out.println(connection.getUser());
OpenfireManager.getInstance().sendMessage(chat, "123456", "regCode");