openfire 和以往版本号配置没有多大差别就不具体介绍了,网上搜会有一大堆的图解

以下主要说一下smack 4.1.2 的开发使用,在网上看了好多文章包含stackoverflow的都没有4.1以上的使用说明,同一时候我发现官方的一些说明好像和这个版本号不正确应。比如UseConnectionConfiguration#setReconnectionAllowed(boolean)
to turn on/off this feature。  我查了根本没有这种方法。所以以就自己写了一些笔记,供大家參考,同一时候共同讨论促进大家使用smack的最新版。

下面是我參考的链接

http://my.oschina.net/yuanxulong/blog/348572

https://github.com/igniterealtime/Smack/blob/master/documentation/gettingstarted.md

http://blog.csdn.net/chszs/article/details/41620843

http://blog.csdn.net/chszs/article/details/41620853

securty问题

https://issues.jenkins-ci.org/browse/JENKINS-25505

认证方式

http://blog.csdn.net/coding_me/article/details/39524137

0认证的解决的方法

I have solved this problem, the Service Name should be the same as openfire settings:

以下是我写的工具类,聊天也就主要两件事情。一个就是发送信息。一个是接受信息,发送就是smackTools.getChat();.sendMessage("detail") 获取内容就是 chatManager.addChatListener(new ChatManagerListener()
 那一部分,整体讲比較简单,下面说明须要注意的几点

(1)下面是securtyMode关闭之后的代码

(2)ServerName不是域名是openfireserver的名称

(3)host能够在host文件里更改

(4)connect.login()完必须循环有操作否则会在别人那里显示为脱机状态

(5) newChat =  chatManager.createChat("why2@why-pc",null);  @后面是serverName

(6)使用完必须关闭连接否则会出现发送一条多条显示的现象。由于每一个对话都是单独一条线程

(7)採用循环让获取对方说话内容一方面获取内容了并且保证一直在线。像网上说的那个设置重连的方法在这版本号中不存在

public class SmackTools {





public static SmackTools smackTools;



private AbstractXMPPConnection connection;



private String content;



private Chat newChat;



private SmackTools() throws InterruptedException{

XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();

         builder.setSecurityMode(ConnectionConfiguration.SecurityMode.disabled);

         builder.setUsernameAndPassword("why1", "why134134");

         builder.setServiceName("why-pc");

         builder.setHost("csdn.shimiso.com");

         builder.setConnectTimeout(10000000);

         builder.setResource("why");





        ConnectionConfiguration config = builder.build();

        try {

        connection = new XMPPTCPConnection(builder.build());

connection.connect();

connection.login();



//获取的谈话

//chat

            final ChatManager chatManager = ChatManager.getInstanceFor(connection);

            newChat =  chatManager.createChat("why2@why-pc",null);

           

            new Thread(){

           

            public void run() {

           

            while(true){

                         

                     
try {

Thread.sleep(3000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

                           

                           chatManager.addChatListener(new ChatManagerListener() {

           

            @Override

            public void chatCreated(Chat chat, boolean createdLocally) {

            if (!createdLocally) {

                                           chat.addMessageListener(new ChatMessageListener() {

                                               @Override

                                               public void processMessage(Chat chat, Message message) {

                                             
 

                                             
if(message.getBody() == null || message.getBody().equals(null)){

                                             
 

                                             
}

                                             
else{

                                             
// System.out

            //
.println("run...");

                                             
System.out

            .println("from " + message.getFrom() + "   " + message.getBody());

                                             
content = content + "\n" + message.getFrom() + ":  " + message.getBody();

                                             
Consts.content = Consts.content + "\n" + message.getFrom() + ":  " + message.getBody();

                                             
}

                                             


                                              

                                               }

                                           });

                                       }

            }

            });

                           

                       }  

           

            };

           

            }.start();

            

} catch (SmackException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (XMPPException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}



public Chat getChat(){

return newChat;

}



public String getContent(){

return content;

}



public AbstractXMPPConnection getConn(){

return connection;

}



public void disConn(){

connection.disconnect();

}



public static SmackTools getInstance(){

if(smackTools == null){

try {

smackTools = new SmackTools();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

return smackTools;

}

}

smack 4.1.2+openfire 3.10.2i的更多相关文章

  1. xmpp openfire smack 介绍和openfire安装及使用

    前言 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也有其他的选择. Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使用 ...

  2. 基于xmpp openfire smack开发之openfire介绍和部署[1]

    前言 http://blog.csdn.net/shimiso/article/details/8816558 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也 ...

  3. Openfire XMPP Smack RTC IM 即时通讯 聊天 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. 基于openfire+smack即时通讯instant message开发

    前言 Java领域的即时通信的解决方案可以考虑openfire+spark+smack.当然也有其他的选择. Openfire 是基于Jabber协议(XMPP)实现的即时通信服务器端版本,目前建议使 ...

  5. (转)基于即时通信和LBS技术的位置感知服务(三):搭建Openfire服务器+测试2款IM客户端

    主要包含4个章节: 1. Java 领域的即时通信的解决方案 2. 搭建 Openfire 服务器 3. 使用客户端测试我们搭建的 Openfire 服务器 4. Smack 和 ASmack 一.J ...

  6. [即时通讯]openfire启动失败解决办法

    当你发现你的电脑上的openfire无论你是重新安装还是重启都无法启动的情况下你可以按照我下面写的那些终端指令来启动你的openfire不用再去重新做你的系统了. 一般你发现你的openfire打开出 ...

  7. openfire安装配置完全教程

    Java领域的IM解决方案 Java领域的即时通信的解决方案可以考虑openfire+spark+smack. Openfire是基于Jabber协议(XMPP)实现的即时通信服务器端,最新版本是3. ...

  8. Apache MiNa 实现多人聊天室

    Apache MiNa 实现多人聊天室 开发环境: System:Windows JavaSDK:1.6 IDE:eclipse.MyEclipse 6.6 开发依赖库: Jdk1.4+.mina-c ...

  9. MAC下的XMPP环境搭建

    实现即时通信有多种方式,下面讲的是Mac下使用XMPP来实现. XML Messages Presence Protocol 可扩展消息处理协议 简单讲就是基于XML语言的点对点即时通信协议  原理: ...

随机推荐

  1. 解决小米手机不能运行Android Studio程序的问题

    转载自:解决小米手机不能运行Android Studio程序的问题 问题描述 Android Studio升级到2.3版本之后,小米手机MIUI8不能运行Android Studio程序,报如下错误: ...

  2. pytest文档25-conftest.py作用范围

    前言 一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用. 在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目 ...

  3. Selenium2+python自动化48-登录方法(参数化)

    前言 登录这个场景在写用例的时候经常会有,我们可以把登录封装成一个方法,然后把账号和密码参数化,这样以后用的登录的时候,只需调用这个方法就行了 一.登录方法 1.把输入账号.输入密码.点击登录按钮三个 ...

  4. dubbo培训文档

    培训文档 1.<服务框架实践与探索> 主题:QCon2011杭州主题演讲,分享Dubbo服务框架的实践历程.主讲:钱霄,梁飞课件:Service Framework Practices.p ...

  5. string.Format对C#字符串格式化[转]

    string.Format对C#字符串格式化 String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 ...

  6. php解决乱码问题时,出现Cannot modify header information问题的解决方法

    设置页面编码使用: header("Content-Type:text/html;charset=utf-8"); 会出现:Cannot modify header informa ...

  7. iOS开发-JSON解析

    JSON(JavaScript Object Notation)在网络传输中几乎无处不在,JSON是一种轻量级的数据交换格式,是基于JavaScript(Standard ECMA-262 3rd E ...

  8. 根据百度API获得经纬度,然后根据经纬度在获得城市信息

    package com.pb.baiduapi; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...

  9. iframe多层嵌套时获取元素

    一.同域:1.父页面获取子页面元素:注意:onload事件jQuery获取:$("iframe").contents().find("holder")..... ...

  10. [LeetCode] Distinct Subsequences [29]

    题目 Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequen ...