`
yangwei0915
  • 浏览: 465338 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

openfire系列之一 实现消息的发送

 
阅读更多

 代码如下:

/**
 * @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");	

 

分享到:
评论

相关推荐

    openfire处理消息流程及openfire详细信息

    - **Smack**:作为XMPP协议的Java实现,Smack提供了一系列可扩展的API,允许开发者通过定制XML消息内容来实现特定功能。它是Spark与Openfire之间数据交换的桥梁。 - **Openfire**:作为服务器端实现,Openfire负责...

    Smack3.0.4+ Openfire3.10.2 Android 客户端之四

    Smack 3.0.4是其一个较旧但仍然广泛使用的版本,它提供了连接到XMPP服务器、发送和接收消息、处理用户状态等功能。在Android环境中,Smack库使得开发者能够轻松地集成即时通讯功能到移动应用中。 Openfire是基于...

    Android应用源码之AdXmpp(Openfire+asmack+spark)-IT计算机-毕业设计.zip

    Asmack提供了连接Openfire服务器、建立会话、发送接收消息等一系列API,使得开发者能够在Android应用中轻松实现XMPP功能。在AdXmpp的源码中,你会看到如何使用Asmack建立连接,创建实体,发送和接收XMPP消息的实例...

    Android应用源码之AdXmpp(Openfire+asmack+spark).zip

    Asmack提供了连接管理、会话建立、消息发送和接收、用户状态管理等一系列功能,是Android应用实现XMPP通信的核心组件。 Spark则是一个流行的XMPP客户端,通常用于桌面环境,但它也为开发者提供了许多有用的API和...

    openfire4.2.2 开发所需jar包,含smack jar包及所有辅助包,省去找包烦恼

    Smack库是Openfire开发的核心组件之一,它提供了丰富的API,允许开发者轻松地创建XMPP客户端或服务器端程序。Smack 4.2.2版本可能引入了新的特性、修复了已知问题,以提高性能和兼容性。例如,它可能包含了更安全的...

    XMPP基础实现博文整理

    Smack提供了连接管理、会话创建、消息发送与接收、用户状态管理等一系列接口和类,使得开发者能够快速实现XMPP功能。 三、Smack库的使用 1. 连接XMPP服务器:首先,你需要创建一个`XMPPTCPConnection`实例,指定...

    XMPP即时聊天 QQ 微信

    以上知识是基于XMPP协议在Android上开发即时通讯应用的基础,通过阅读《Android之基于XMPP协议即时通讯软件》系列博客,可以深入了解每个环节的具体实现步骤和技巧。同时,提供的图片文件可能包含示例代码、界面截图...

    Android中的XMPP应用

    该协议由Jabber开源社区贡献并发展起来,在全球范围内得到了广泛应用,是四大主流即时通信协议之一。XMPP因其开放性、可扩展性和灵活性而受到开发者的青睐。 在即时通信领域,Google曾经推出的GTalk就是一个基于...

    extensible_messaging_and_presence_protocol_xmpp_co.zip

    XMPP的扩展性是其最大特点之一。通过使用Jabber扩展协议(XEP),开发者可以添加新的功能和行为,比如文件传输(XEP-0096)、多用户聊天室(MUC,XEP-0045)和推送通知(XEP-0357)。目前,已有数百个XEP定义了各种...

    mina框架调研

    - **功能**: IoHandler是MINA框架的核心组件之一,它处理所有来自客户端的数据和事件。通过继承`IoHandlerAdapter`类并重写相应的方法,开发者可以轻松地实现自定义的事件处理逻辑。 #### 4. MINA框架应用 ##### ...

    java开源包3

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

    mina基础技术

    - **IoSession**:用于保存会话属性并发送消息。它代表了服务器与客户端之间的特定连接,由服务器地址、端口以及客户端地址、端口共同决定。 - **IoSession的常用方法**: - `setAttribute(Object key, Object ...

    Android应用源码安卓源码(172个合集).zip

    Android之用PopupWindow实现弹出菜单.rar android在wifi下手机与电脑的socket通信.rar android多线程断点下载.rar Android手机一键Root原理分析.zip Android手机的VoIP客户端 Sipdroid.rar Android有未接来电后处理...

    java开源包4

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

    java开源包11

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

    java开源包1

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

    java开源包2

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

    java开源包6

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

    java开源包5

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

    java开源包10

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

Global site tag (gtag.js) - Google Analytics