博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
smack 4.1.2+openfire 3.10.2i
阅读量:6681 次
发布时间:2019-06-25

本文共 3597 字,大约阅读时间需要 11 分钟。

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;
}
}

转载于:https://www.cnblogs.com/gavanwanggw/p/6719151.html

你可能感兴趣的文章
83.导入项目时,用npm install安装module
查看>>
MSSQL日期时间函数大全
查看>>
二度xml<一>
查看>>
爱情令人意醉神迷
查看>>
ASP.NET 生成图片验证码
查看>>
ToString()转换格式;DateTime.ToString()用法详解
查看>>
如何让Apache不显示服务器信息
查看>>
VSS配置
查看>>
数据分页存储过程
查看>>
事件流
查看>>
HDU-1532-Drainage Ditches
查看>>
angularJS的学习资源,巨全
查看>>
计算最长英语单词链
查看>>
LIS和LCS算法分析
查看>>
Error prompt:“xxx is not in the sudoers file”----Solution
查看>>
基于Silverlight的新浪微博客户端 - LightBus
查看>>
C#多维数组与嵌套数组
查看>>
Sublime text3的一些操作
查看>>
MySQL-ProxySQL中间件(二)| Admin Schemas介绍
查看>>
Python 设置 IP 代理 访问网页 ( 用户名密码验证代理 )
查看>>