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. NodeJS学习资料合集

    1. 官网 nodejs 2.  How do I get started with Node.js,stackoverflow提问,收集非常多实用的网站 3.  node-books.github收 ...

  2. docker Redis的主从配置

    redis是k-v型nosql数据库,支持字符串(string).列表(list).集合(set).散列(hash).有序集合(zset:形如member:score的散列集合,其中member为成员 ...

  3. ldap、additional info: no global superior knowledge

    /usr/local/openldap/bin/ldapadd -x -D 'cn=Manager,dc=duxingyu,dc=com' -W -f init.ldif Enter LDAP Pas ...

  4. [翻译] DFXCoreTextView

    DFXCoreTextView https://github.com/davefoxy/DFXCoreTextView A CoreText wrapper for the formatting an ...

  5. android之截屏(包括截取scrollview与listview的)

    public class ScreenShot { // 获取指定Activity的截屏,保存到png文件 public static Bitmap takeScreenShot(Activity a ...

  6. 经典数独游戏+数独求解器—纯C语言实现

    "心常乐数独小游戏"(下面简称"本软件")是一款windows平台下的数独游戏软件. 本软件是开源.免费软件. 本软件使用纯C语言编写,MinGW编译,NSIS ...

  7. my.cnf 配置文件参数解释

    my.cnf 配置文件参数解释: #*** client options 相关选项 ***# #以下选项会被MySQL客户端应用读取.注意只有MySQL附带的客户端应用程序保证可以读取这段内容.如果你 ...

  8. 【hihoCoder】【挑战赛#12】

    模拟+枚举+模拟……+构造 QAQAQQQ rank12求杯子! A 顺子 ……模拟题,分类讨论一下就好了……比如当前四张牌是不是同一花色……是不是连续的四张牌,如果是连续的四张牌,是不是两边的……( ...

  9. cubieboard 通过VGA点亮电脑屏幕笔记

    前题:由于公司某些方面的需要,于是就开始尝试了来通过VGA输出--因为不可能每个地方都是高清电视,这是其一:如果要买一个HDMI转VGA的话,成本上就有所上升:反正吧,各种理由,都觉得直接通过VGA输 ...

  10. C语言:自定义一个查找字串的功能函数,类似于<string.h>中的strstr()

    //自定义一个字符串字串查找标准库函数strstr() #include<stdio.h> #include<string.h> char* myStrstr(char *st ...