//基础说明
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);