写在前面,要想实现整个过程的成功执行请先准备以下文件:
1. 登陆Openfire服务端以及Spark客户端相关程序(openfire_4_0_1.exe、spark_2_7_6.exe)
2. 连接Openfire和Oracle相关的jar包(presence.jar、smack.jar、smackx-debug.jar、smackx.jar、ojdbc.jar)
Step1:安装Openfire服务端并配置数据库连接,配置参考《Openfire服务器安装与配置教程》
Step2:在Eclipse等IDE开发工具中编写Java Application程序并导入smack的3个jar包
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smackx.MessageEventManager;
/**
* Openfire服务端发送消息到指定客户端账号
*
* @author xiaolj
* @date 2016-01-05
*/
public class SendMsgFunc {
public static void main(String args[]) {
//参数1:openfire服务端创建的账号(发送消息前请先用Spark客户端登录10000账号)
//参数2:需要发送的消息内容
int status = sendImMessage("10000", "主减装配一线设备异常,请及时处理!【反馈人:张三;联系电话:13883638681】");
System.err.println(status);
}
/**
* 根据返回状态确认是否发送成功
*/
public static int sendImMessage(String userid, String content) {
System.out.println("开始执行消息推送");
String ip = "127.0.0.1";//服务里IP或服务器对应主机名
String port = "5222";// 客户端PID默认都是5222
String domain = "server-pc";//服务器主机名或IP地址
String adminid = "admin";//固定不变发起人(openfire服务器默认最高级权限账户)
String pwd = "admin";//固定不变(openfire服务器默认最高级权限账户密码)
int on_line = 0;// 是否在线
try {
// 判断用户是否在线:--若出现error设置插件在线状态任何权限访问
String url = "http://127.0.0.1:9090/plugins/presence/status?jid="+ userid + "@server-pc&type=xml";
on_line = judgUserOnline(url);
// 建立连接发送客户端消息
XMPPConnection con = new XMPPConnection(ip, Integer.parseInt(port));
con.login(adminid, pwd);
Chat chat = con.createChat(userid + "@" + domain);
Message msg =