Smack 的使用

//基础说明

Spark是一个基于XMPP协议的Java聊天工具,它的同宗Smack可以对Google Gtalk(已被环聊功能取代)支持.

http://www.igniterealtime.org/ 是spakr的官网,有详细的参考文档.

下面说一下使用.CS式的聊天工具,需要一个Server,下载Openfire,跨平台,根据需要安装.

1 自己使用的是window版本

2 解压缩后在  openfire_3_8_2\openfire\resources\database 目录下可以看到对各版本支持的SQL语句.(默认支持HSQL,MySQL,使用其它数据库需要在openfire_3_8_2\openfire\lib  目录下存入相对的JDBC驱动)

3 根据需要执行完SQL 语句后数据库.可以使用 D:\Java\openfire_3_8_2\openfire\bin\openfire.exe 启动服务器

4 浏览器打开 127.0.0.1:9090 可以看到控制台,第一次登录需要初始化设置.设置完之后可以使用设置的密码登录.默认登录名"admin"

安装完下载的Spark即可以使用它的功能了.

//关于使用

数据库常用表介绍:

ofproperty 用于存入系统的一些基本信息,类似于配文件

ofuser 用于存放用户基本信息

ofroster 好友关系列表

Smack 是它的Java API

http://www.igniterealtime.org/builds/smack/docs/latest/documentation/ 有详细的参考文档,配合数据库操作,可以为OA,ERP等程序提供即时聊天服务.

1. Jar包

smack.jar 核心必备包

smackx.jar 功能包

2.基本操作

2.1 建立连接

// Create the configuration for this new connectionConnectionConfiguration config = new ConnectionConfiguration("jabber.org", 5222);
config.setCompressionEnabled(true);
config.setSASLAuthenticationEnabled(true);

Connection connection = new XMPPConnection(config);// Connect to the serverconnection.connect();// Log into the serverconnection.login("username", "password", "SomeResource");
....// Disconnect from the serverconnection.disconnect();

2.2 发送接收消息

// Assume we've created a Connection name "connection".
ChatManager chatmanager = connection.getChatManager();
Chat newChat = chatmanager.createChat("[email protected]", new MessageListener() {
    public void processMessage(Chat chat, Message message) {//用于接收消息
        System.out.println("Received message: " + message);
    }
});

try {
    newChat.sendMessage("Howdy!");//发送消息
}
catch (XMPPException e) {
    System.out.println("Error Delivering block");
}

2.3 好友

Roster roster = connection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
for (RosterEntry entry : entries) {
    System.out.println(entry);
}
// 可以通过 roster 获取监听器,监听好友上线下线状态

2.4 新增用户(用户名不允许有特殊字符)

//这里的 passwordKey 在表 ofproperty 里能找到,Blowfish 从Openfire 的lib 的 openfire.jar 里找到的,用来对密码加密,解密
Blowfish blowfish = new Blowfish(passwordKey);
jdbcTemplate.update("insert into ofuser values(?,null,?,?,?,?,'0')", userName,
                    blowfish.encryptString(default_password_key), openName,"[email protected]", nowTime);


你可能感兴趣的:(spark,openfire,smack,XMPP,Java聊天工具)