1.下载OpenFire服务器,进行安装,参考http://www.cnblogs.com/hoojo/archive/2012/05/17/2506769.html

2.程序运行客户端:下载客户端代码并进行配置 选中项目-->点击“run configurations”进行配置,如下图所示:

  Main Class:org.jivesoftware.launcher.Startup;

  VM arguments:-Djava.library.path="${workspace_loc:spark}/target/build/lib/windows"

点击“run spark”,显示如下图:

3.在程序中添加调用:

 package com.rixin.spark;

 import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.Connection;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Message.Type;
import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smack.packet.Session; import com.rixin.user.model.User; /**
* <b>function:</b> 利用Smack框架完成 XMPP 协议通信
*
* @author hoojo
* @createDate 2012-5-22 上午10:28:18
* @file ConnectionServerTest.java
* @package com.hoo.smack.conn
* @project jwchat
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
public class SmackXMPP { private Connection connection;
private ConnectionConfiguration config;
/** openfire服务器address */
private final static String server = "192.168.1.230"; private final void fail(Object o) {
if (o != null) {
System.out.println(o);
}
} private final void fail(Object o, Object... args) {
if (o != null && args != null && args.length > 0) {
String s = o.toString();
for (int i = 0; i < args.length; i++) {
String item = args[i] == null ? "" : args[i].toString();
if (s.contains("{" + i + "}")) {
s = s.replace("{" + i + "}", item);
} else {
s += " " + item;
}
}
System.out.println(s);
}
} /**
* <b>function:</b> 初始Smack对openfire服务器链接的基本配置
*
* @author hoojo
* @createDate 2012-6-25 下午04:06:42
*/
public void init() {
try {
// connection = new XMPPConnection(server);
// connection.connect();
/**
* 9090是openfire服务器默认的通信端口,你可以登录http://192.168.1.230:9090/
* 到管理员控制台查看客户端到服务器端口
*/
config = new ConnectionConfiguration(server, 5222); /** 是否启用压缩 */
config.setCompressionEnabled(true);
/** 是否启用安全验证 */
config.setSASLAuthenticationEnabled(true);
/** 是否启用调试 */
config.setDebuggerEnabled(false);
// config.setReconnectionAllowed(true);
// config.setRosterLoadedAtLogin(true); /** 创建connection链接 */
connection = new XMPPConnection(config);
/** 建立连接 */
connection.connect();
} catch (XMPPException e) {
e.printStackTrace();
}
fail(connection);
fail(connection.getConnectionID());
} public void destory() {
if (connection != null) {
connection.disconnect();
connection = null;
}
} public static void main(String[] args) {
SmackXMPP smack = new SmackXMPP();
User fromUser = new User();
fromUser.setUsername("wd");
fromUser.setPassword("123");
smack.sendMsg(fromUser, "lhc", "你有一个待办,请办理。类型:请假。http://www.oa.rixin/jingjia");
} /**
* 发送即时通讯信息
*
* @param fromUser
* 发送人对象
* @param toUserName
* 接收人用户名
* @param msg
* 发送内容
*/
public void sendMsg(User fromUser, String toUserName, String msg) {
init();
try {
connection.login(fromUser.getUsername(), fromUser.getPassword());
} catch (XMPPException e) {
e.printStackTrace();
} /**
* 向jojo@192.168.1.230 发送聊天消息,此时你需要用Spark软件登陆jojo这个用户,
* 这样代码就可以向jojo这个用户发送聊天消息,Spark登陆的jojo用户就可以接收到消息
**/
/** Type.chat 表示聊天,groupchat多人聊天,error错误,headline在线用户; */
Message message = new Message(toUserName + "@" + server, Type.chat);
// Message message = new Message(sessid, Type.chat);
message.setBody(msg);
connection.sendPacket(message);
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
destory();
} /**
* <b>function:</b> 消息监听器,用户监听对方发送的消息,也可以想对方发送消息
*
* @author hoojo
* @createDate 2012-6-25 下午05:05:31
* @file SmackXMPPTest.java
* @package com.hoo.smack
* @project jwchat
* @blog http://blog.csdn.net/IBM_hoojo
* @email hoojo_@126.com
* @version 1.0
*/
class MyMessageListeners implements MessageListener {
public void processMessage(Chat chat, Message message) {
try {
/** 发送消息 */
chat.sendMessage("dingding……" + message.getBody());
} catch (XMPPException e) {
e.printStackTrace();
}
/** 接收消息 */
fail("From: {0}, To: {1}, Type: {2}, Sub: {3}", message.getFrom(),
message.getTo(), message.getType(), message.toXML());
/*
* Collection<Body> bodys = message.getBodies(); for (Body body :
* bodys) { fail("bodies[{0}]", body.getMessage()); }
* //fail(message.getLanguage()); //fail(message.getThread());
* //fail(message.getXmlns());
*/
fail("body: ", message.getBody());
}
}
}

运行可以发送系统消息。

spark结合 Openfire服务器,发送聊天消息的更多相关文章

  1. Smack 结合 Openfire服务器,建立IM通信,发送聊天消息

    在文章开始,请你了解和熟悉openfire方面的相关知识,这样对你理解下面代码以及下面代码的用途有很好的了解.同时,你可能需要安装一个简单的CS聊天工具,来测试你的代码是否成功的在openfire服务 ...

  2. 基于XMPP协议(openfire服务器)的消息推送实现

    转自:http://blog.csdn.net/nomousewch/article/details/8088277 最近好像有不少朋友关注Android客户端消息推送的实现,我在之前的项目中用到过J ...

  3. JAVA微信公众号网页开发 —— 接收微信服务器发送的消息

    WeixinMessage.java package com.test; import java.io.Serializable; /** * This is an object that conta ...

  4. 即时通信系统中如何实现:聊天消息加密,让通信更安全? 【低调赠送:QQ高仿版GG 4.5 最新源码】

    加密重要的通信消息,是一个常见的需求.在一些政府部门的即时通信软件中(如税务系统),对聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新的GG 4.5中,增加了对聊天消息 ...

  5. 即时通信系统中实现聊天消息加密,让通信更安全【低调赠送:C#开源即时通讯系统(支持广域网)——GGTalk4.5 最新源码】

    在即时通讯系统(IM)中,加密重要的通信消息,是一个常见的需求.尤其在一些政府部门的即时通信软件中(如税务系统),对即时聊天消息进行加密是非常重要的一个功能,因为谈话中可能会涉及到机密的数据.我在最新 ...

  6. 七、Uniapp+vue+腾讯IM+腾讯音视频开发仿微信的IM聊天APP,支持各类消息收发,音视频通话,附vue实现源码(已开源)-聊天消息项的实现

    会话好友列表的实现 1.项目引言 2.腾讯云后台配置TXIM 3.配置项目并实现IM登录 4.会话好友列表的实现 5.聊天输入框的实现 6.聊天界面容器的实现 7.聊天消息项的实现 8.聊天输入框扩展 ...

  7. openfire聊天消息记录插件关键代码

    package com.sqj.openfire.chat.logs; import java.io.File; import java.util.Date; import java.util.Lis ...

  8. Openfire服务器和Spark客户端配置

    一.Openfire服务器的配置 关于之前一直在进行的聊天app的项目,我们还没有完成,这次我们介绍一下,Openfire服务器的配置. 1.Openfire下载 Openfire下载地址:http: ...

  9. openfire服务器+Spark搭建即时聊天系统 & 阿里云的初步探索

    晚上出去和洋仔吃了涮肉,喝了点啤酒,不知不觉就聊到了11点,感觉他工作状态还不错,emmm...都要加油吧.虽然没有当时去山西零下二十多度那么夸张,这几天北京的冬夜还是有点小冷的.好了进入正题: 一. ...

随机推荐

  1. POJ 3253 Fence Repair【二叉堆】

    题意:给出n根木板,需要把它们连接起来,每一次连接的花费是他们的长度之和,问最少需要多少钱. 和上一题果子合并一样,只不过这一题用long long 学习的手写二叉堆的代码,再好好理解= = #inc ...

  2. MySQL基础之第9章 触发器

    触发器(TRIGGER)是由事件来触发某个操作.这些事件包括INSERT语句.UPDATE语句和DELETE语句.当数据库系统执行这些事件时,就会激活触发器执行相应的操作.MySQL从5.0.2版本开 ...

  3. Oracle 课程四之索引

    课程目标 完成本课程的学习后,您应该能够: 理解b*tree索引的结构与特征 了解聚簇因子的产生原因 理解分区索引与全局索引的区别及场景 掌握组合索引的高效设计 位图索引的适用场景 全文索引的适用场景 ...

  4. Mysql 多表联合查询效率分析及优化

    1. 多表连接类型 1. 笛卡尔积(交叉连接) 在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用','  如: SELECT * FROM table1 CROSS JO ...

  5. 常见设计模式解析和实现(C++)FlyWeight模式

    作用:运用共享技术有效地支持大量细粒度的对象 UML结构图: 解析: Flyweight模式在大量使用一些可以被共享的对象的时候使用.比如,在QQ聊天时很多时候你懒得回复又不得不回复,一般会用一些客套 ...

  6. hadoop 权限错误 Permission denied: user=root, access=WRITE, inode="/":hdfs:super

    关于不能执行Hadoop命令 并报权限问题执行错误1.Permission denied: user=root, access=WRITE, inode="/":hdfs:supe ...

  7. ping命令的几个简单使用

    发觉linux下的ping命令花样还挺多的,下面是几个例子 1.ping www.baidu.com,最粗糙的用法,此时主机将不停地向目的地址发送ICMP echo request数据包,直至你按下C ...

  8. [apkAnalyzer] 查看APK包名

    最近项目中要用到APK的包名,必应到apkAnalyzer这个软件可以用,下载解压后,看到这么些jar,bat文件不知道怎么用. 参考了这篇文章,看的也不甚明白,最后还是试出来了,这里记录一下. 首先 ...

  9. Install_ruby

    Install rvm 1 2 3 $ curl -L get.rvm.io | bash -s stable $ source ~/.bashrc $ source ~/.bash_profile ...

  10. ActiveReport资料

    1. ActiveReports for .NET 2 Online | ActiveReports for .NET 3 Online 2.GroupHeader块 ①GroupHeader块为每个 ...